[SQL*Loader] OR in when clause

Pagina: 1
Acties:

  • Maasluip
  • Registratie: April 2002
  • Laatst online: 21:50

Maasluip

Kabbelend watertje

Topicstarter
Ik zit hier met een klein probleempje in SQL*Loader (van Oracle 7): in de when clause wil ik meerdere mogelijkheden hebben om velden te laden. Er staat nu
code:
1
when fbu='091'
maar ik wil ook fbu's laden die andere waardes hebben.
Logische gedachte is dan
code:
1
when fbu='091' or fbu='054'
of
code:
1
when fbu in ('091', '054')
maar SQL*Loader pikt dit niet. Volgens de help kun je alleen maar met AND verschillende clausules aan elkaar plakken, en daar kan ik natuurlijk niets mee. 8)7

Mijn low-tech oplossing is dan maar meerdere keren SQL*Loader op te roepen, iedere keer met de fbu die ik wil.

Kan dit echt niet anders? Is dit gewoon de missing feature van de eeuw in Oracle?

[ Voor 12% gewijzigd door Maasluip op 12-03-2004 08:56 ]

Signatures zijn voor boomers.


  • marco_balk
  • Registratie: April 2001
  • Laatst online: 15-05 13:37
Het eerste wat mij opvalt is: "when fbu='091' of fbu='054'".
Moet dat geen OR zijn, of maakt dat nog niets uit.... (of is het gewoon een tikfout)

  • Maasluip
  • Registratie: April 2002
  • Laatst online: 21:50

Maasluip

Kabbelend watertje

Topicstarter
kwakkie schreef op 12 maart 2004 @ 08:54:
Het eerste wat mij opvalt is: "when fbu='091' of fbu='054'".
Moet dat geen OR zijn, of maakt dat nog niets uit.... (of is het gewoon een tikfout)
Is een tikfout in het topic :z

[ Voor 10% gewijzigd door Maasluip op 12-03-2004 08:57 ]

Signatures zijn voor boomers.


  • Maasluip
  • Registratie: April 2002
  • Laatst online: 21:50

Maasluip

Kabbelend watertje

Topicstarter
* Maasluip kickt het topic maar eens

Signatures zijn voor boomers.


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
* P_de_B heeft geen ervaring met Oracle

In SQL Server zou je meerdere WHEN statements achter elkaar moeten doen

WHEN ....
WHEN ....
WHEN ....
ELSE ....
END

Oops! Google Chrome could not find www.rijks%20museum.nl


Verwijderd

Een andere mogelijkheid is een UNION te maken dan hoef je de query maar 1 keer uit te voeren en worden de resultaten als 1 resultaat weergegeven.
Maar als een OR statement niet mogelijk is zal een UNION wel helemaal tot de onmogelijkheden behoren.

  • Maasluip
  • Registratie: April 2002
  • Laatst online: 21:50

Maasluip

Kabbelend watertje

Topicstarter
Ik heb met meerdere WHEN's geprobeerd, dat doet het ook niet (SQL*Loader-350: Syntax error at line 6. Expecting "(", found keyword when.)

Met unions werken gaat ook niet lukken, in SQL*Loader gebruik je geen standaard SQL. Om je een indruk te geven hoe een controlfile vam SQL*Loader eruit ziet:
code:
1
2
3
4
5
6
7
8
9
LOAD DATA
INFILE "GTBR_EXTRACT.TXT"
INTO TABLE GTBR_TMP
replace
when fbu='091'
FIELDS TERMINATED BY ','
( Rc,
...
)


Je kunt volgens de helpfiles dus ook
code:
1
when fbu='091' and fbu='014'
gebruiken, maar common sense zegt al dat dit in mijn situatie niet echt tot resultaat leidt.

offtopic:
P_de_B: coole sig! Ik heb in een van mijn vorige baantjes heel wat blaadjes met die tekst moeten printen

[ Voor 16% gewijzigd door Maasluip op 15-03-2004 14:12 ]

Signatures zijn voor boomers.

Pagina: 1