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 . mit null weil der Wert zu vergleichen, muss zunächst in decode? 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.
InformationsquelleAutor kmas | 2013-08-08
Schreibe einen Kommentar