Pregunta

Estoy intentando cargar datos de un archivo y quiero conjunto CREATED_DATE y UPDATED_DATE a SYSDATE y CREATE_BY y UPDATED_BY al usuario

A continuación, la tabla que estoy trabajando 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));

y aquí está el archivo de datos:

1,"Title 1"
2,"Title 2"
3,"Title 3"
4,"Title 4"
5,"Title 5"
6,"Title 6"

y mi archivo de control:

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")

Cuando intento cargar con el cargador del SQL ... todos los registros son rechazadas:

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)
.......

¿Alguna idea de lo que estoy haciendo mal? Gracias de antemano.

¿Fue útil?

Solución

Sólo haz lo que Oracle dice: add TRAILING NULLCOLS a su archivo de control:

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")

Esto es necesario porque sólo las dos primeras columnas se encuentran en el archivo de entrada. Los remaing son puramente calculan.

Si no lo especifica, Oracle intenta leer una tercera, cuarta, etc. columna, pero no puede encontrar uno.

Otros consejos

En el archivo de control intente esto

(CNO,CTITLE,CREATED_BY "USER", CREATED_DATE SYSDATE, UPDATED_BY "USER", UPDATED_DATE SYSDATE)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top