SQL Loader Skript Hilfe mit dem Hinzufügen von SYSDATE, USER
-
28-09-2019 - |
Frage
Ich bin aus einer Datei zu laden Daten versuchen, und ich möchte Set CREATED_DATE und UPDATED_DATE zu SYSDATE und CREATE_BY und UPDATED_BY USER
Hier ist die Tabelle, dass ich arbeite mit:
CREATE TABLE CATALOG
(CNO NUMBER,
CTITLE VARCHAR2(25),
CREATED_BY VARCHAR2(10) NOT NULL,
CREATED_DATE DATE NOT NULL,
UPDATED_BY VARCHAR2(10) NOT NULL,
UPDATED_DATE DATE NOT NULL,
CONSTRAINT CATALOG_PK Primary Key (CNO));
und hier ist die Datendatei:
1,"Title 1"
2,"Title 2"
3,"Title 3"
4,"Title 4"
5,"Title 5"
6,"Title 6"
und meine Steuerdatei:
LOAD DATA
INFILE "mydata.csv"
INTO TABLE CATALOG
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
(CNO,CTITLE,CREATED_BY "USER", CREATED_DATE "SYSDATE", UPDATED_BY "USER", UPDATED_DATE "SYSDATE")
Wenn ich versuche, es mit SQL Loader zu laden ... alle Datensätze werden verworfen:
Record 1: Rejected - Error on table CATALOG, column CREATED_BY.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 2: Rejected - Error on table CATALOG, column CREATED_BY.
Column not found before end of logical record (use TRAILING NULLCOLS)
.......
Alle Ideen, was ich falsch mache? Vielen Dank im Voraus.
Lösung
Genau das tun, was Oracle sagt: add TRAILING NULLCOLS
zu Ihrer Steuerdatei:
LOAD DATA
INFILE "mydata.csv"
INTO TABLE CATALOG
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS
(CNO,CTITLE,CREATED_BY "USER", CREATED_DATE "SYSDATE", UPDATED_BY "USER", UPDATED_DATE "SYSDATE")
Dies ist erforderlich, weil nur die ersten beiden Spalten in der Eingabedatei sind. Die remaing diejenigen sind rein berechnet.
Wenn Sie es nicht angeben, versucht Oracle eine dritte zu lesen, vierten usw. Spalte, kann aber nicht finden.
Andere Tipps
In der Steuerdatei versuchen, diesen
(CNO,CTITLE,CREATED_BY "USER", CREATED_DATE SYSDATE, UPDATED_BY "USER", UPDATED_DATE SYSDATE)