ayuda secuencia de comandos SQL cargador con la adición de SYSDATE, USUARIO
-
28-09-2019 - |
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.
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)