aiuto script SQL Loader con l'aggiunta di SYSDATE, UTENTE
-
28-09-2019 - |
Domanda
Sto cercando di caricare i dati da un file e voglio CREATED_DATE set e UPDATED_DATE a SYSDATE e CREATE_BY e UPDATED_BY a USER
Ecco la tabella che sto lavorando con:
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));
e qui è il file di dati:
1,"Title 1"
2,"Title 2"
3,"Title 3"
4,"Title 4"
5,"Title 5"
6,"Title 6"
e il mio file di controllo:
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")
Quando provo a caricarlo con SQL Loader ... tutti i record vengono respinte:
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)
.......
Tutte le idee che cosa sto facendo male? Grazie in anticipo.
Soluzione
Basta fare quello che Oracle dice: add TRAILING NULLCOLS
al vostro file di controllo:
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")
Questo è necessario perché solo le prime due colonne sono nel file di input. Quelli remaing puramente sono calcolati.
Se non si specifica che, Oracle cerca di leggere una terza, quarta, ecc colonna, ma non riesce a trovare uno.
Altri suggerimenti
Nel file di controllo provare questo
(CNO,CTITLE,CREATED_BY "USER", CREATED_DATE SYSDATE, UPDATED_BY "USER", UPDATED_DATE SYSDATE)