Wie verwenden Sie decode in sql-loader?
Ich sqlldr verwenden, um CSV-Dateien importieren, und ich habe einige problem mit Datum mehrere Formate.
Daten innerhalb der CSV-Datei sind DD/MM/YYYY und wenn gibt es keinen Tag, es ist ein einzelner Punkt
CSV-Datei
DATE_COLUMN;OTHER_COLUMN
01/01/2013;other column content 1
.;other column content 2
Meine .ctl-Datei für sqlldr
LOAD DATA
INFILE '/path/to/my/file.csv'
REPLACE INTO TABLE table_to_fill
FIELDS TERMINATED BY ';'
(
COLUMNDATE "decode(:COLUMNDATE ,NULL,'.', to_date(:COLUMNDATE ,'DD/MM/YYYY'))",
OTHER_COLUMN
)
Der import funktioniert, wenn ich Sie benutze :
decode(:COLUMNDATE ,NULL,'.'))
oder
to_date(:COLUMNDATE ,'DD/MM/YYYY')
Aber nicht, wenn ich versuche, beide miteinander zu kombinieren...
Hier ist der error log :
Record 1: Rejected - Error on table table_to_fill, column COLUMNDATE.
ORA-01858: a non-numeric character was found where a numeric was expected
Wie kann ich diese kombinieren, bitte ?
Dachte ich, dass der Letzte parameter von "decode" - Funktion wurde für den Standardwert der Spalte, bin ich falsch ?
- Kann der Schalter sein
.
mitnull
weil der Wert zu vergleichen, muss zunächst indecode
?decode(:COLUMNDATE ,'.',NULL, to_date(:COLUMNDATE ,'DD/MM/YYYY'))
- Ich habe vorhin versucht, weil ich dachte, wie du, aber jedes Beispiel, das ich gesehen habe war es so geschrieben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
SQL-Loader "normale" syntax sollte hier genug. Versuchen Sie dies: