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.

È stato utile?

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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top