SQLLDR und NULL-Feld-Erkennung in der Spalte importiert werden
SQLLDR und CTL-Datei
Habe eine CSV-Datei zu importieren.
Will ich geben in meinem CTL-Datei einfügen, nur in meiner Tabelle wenn ich habe einen leeren Wert in einer bestimmten Spalte in der CSV-Datei. E. G ich hochladen will-nur-Benutzer-Datensätze, die nicht haben ein Ablaufdatum.
Habe ich versucht verschiedene Optionen
- Wenn TERMINATIONDATE = "
- Wenn TERMINATIONDATE = ""
- Wenn TERMINATIONDATE = null
- Wenn TERMINATIONDATE = 'null'
funktioniert es nur, wenn ich mit
- Wenn TERMINATIONDATE != "
dann bekomme ich alle meine Mitarbeiter, die beendet wurde.
Aber ich will das Gegenteil...
Nicht so Aussehen, wie es möglich ist, nachdem alle?
meine CTL-Datei
OPTIONS (SKIP=1)
LOAD DATA
INFILE 'C:\temp\users.csv'
BADFILE 'C:\temp\users.bad'
DISCARDFILE 'C:\temp\users.dsc'
TRUNCATE
INTO TABLE "alawakaba"."users"
When TERMINATIONDATE = ''
FIELDS TERMINATED BY '|'
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
ID,
FIRSTNAME,
LASTNAME,
FUNCTION,
DEPARTMENT,
COSTCENTER,
HIREDATE,
Field8 FILLER,
TERMINATIONDATE,
LOCCODE
)
(Column8 ist nur eines brauche ich nicht, also bin ich skipping, dass)
tnxs für deine Einblicke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollte es mit der folgenden Klausel:
oh, got it..
Es ist nicht die ultimative Lösung und hat den zusätzlichen Aufwand, aber ich kann es in 2 runs
a) führen Sie als CTL oben.
Ändern
Wenn TERMINATIONDATE = "
zu
Wenn TERMINATIONDATE != "
Werden die abgelegten Datensätze werden injiziert in die DISCARDFILE 'C:\temp\users.dsc'
nun meine verworfen Datei enthält alle Datensätze, wollte ich hochladen
b) ausführen einer zweiten CTL-Befehl, um die Abholung der DSC-Datei als Eingabe, nicht überspringen Platten mehr und nicht angeben, wenn die Klausel weder
Nicht die beste oder Schnellste, aber es funktioniert der trick .
kann nicht glauben, dass so eine einfache Klausel funktioniert nicht von Anfang an in den SQLLDR.
Anyway, ich hoffe es hilft
K