SQLLDR:
SQL*Loader Command-Line Reference
LDR: LOAD, DATA, REFERENCE
Carga datos de archivos externos en tablas de una base de datos Oracle. Tiene un potente motor de análisis de datos que pone poca limitación en el formato de los datos en el archivo de datos.
Con esta utilidad se pretende:
Cargar datos de múltiples archivos de datos durante la misma sesión de carga.
Cargar datos en varias tablas durante la misma sesión de carga.
Especifique el conjunto de caracteres de los datos.
Cargar datos de forma selectiva.
Manipule los datos antes de cargarlos, utilizando las funciones de SQL.
Cargar datos de disco.
Genere informes de errores sofisticados, que ayudan mucho a la resolución de problemas.
SQL * Loader se invoca cuando especifica el comando sqlldr y, opcionalmente, los parámetros que establecen las características de la sesión.
SQL * Loader Control File
El archivo de control es un archivo de texto escrito en un lenguaje que entiende SQL * Loader. El archivo de control le dice a SQL * Loader dónde encontrar los datos, cómo analizarlos e interpretarlos, dónde insertar los datos y más.
Ejemplo:
Para este ejemplo partimos que anteriormente se ha creado la tabla TBL_PRUEBA con los campos ID_CONSECUTIVO,APELLIDO1,APELLIDO2
Posteriormente creamos el archivo de control en el SOP
Creamos un file control 'running.ctl' la configuración de la carga del archivo
nano -w /oradata/BD/datafile/running.ctl
OPTIONS (SKIP=1)
load data
infile '/backup/Archivo.TXT'
into table TBL_PRUEBA
fields terminated by ","
(ID_CONSECUTIVO,APELLIDO1,APELLIDO2)
Otra configuración para tipo DATE
load data
infile '/backup/Archivo.TXT'
into table TBL_PRUEBA
fields terminated by ","
(ID_CONSECUTIVO,APELLIDO1,APELLIDO2,NOMBRE1,NOMBRE2,FEC_NAC DATE 'DD/MM/YYYY',SEXO)
observar que el cargue de tipo FEC_NAC es de tipo DATE es necesario escribir FEC_NAC DATE 'DD/MM/YYYY'.
así le indicaremos el formato del cargue dia/mes/año DD/MM/YYYY.
Ejecutamos desde una terminal con el user oracle la función archivo sqlldr
sqlldr ESQUEMA/*****@SID control='/oradata/BD/datafile/running.ctl' log=running.log data='/backup/Archivo.csv';
Si el ID_CONSECUTIVO se requiere AUTOINCREMETAL se debe crear una secuencia S_ID_CONSECUTIVO incremental
de 1.
load data
infile '/backup/Archivo.TXT'
into table TBL_PRUEBA
fields terminated by ","
(ID_CONSECUTIVO EXPRESSION "S_ID_CONSECUTIVO.NEXTVAL",APELLIDO1,APELLIDO2,NOMBRE1,NOMBRE2,FEC_NAC DATE 'DD/MM/YYYY',SEXO)
Para el cargue de caracteres especiales 'ñ' CHARACTERSET UTF8
load data
CHARACTERSET UTF8
infile '/backup/Archivo.TXT'
into table TBL_PRUEBA
fields terminated by ","
(ID_CONSECUTIVO EXPRESSION "S_ID_CONSECUTIVO.NEXTVAL",APELLIDO1,APELLIDO2,NOMBRE1,NOMBRE2,FEC_NAC DATE 'DD/MM/YYYY',SEXO)
Para el cargue de caracteres especiales 'ñ' CHARACTERSET UTF8
copiar un archivo utf-8 shell linux
iconv -f ISO-8859-1 -t UTF-8 Archivo.TXT > Archivo.TXT.utf8
load data
CHARACTERSET UTF8
infile '/backup/Archivo.TXT.utf8'
badfile '/backup/Archivo.bad'
TRUNCATE
into table TBL_PRUEBA
fields terminated by ","
(ID_CONSECUTIVO EXPRESSION "S_ID_CONSECUTIVO.NEXTVAL",APELLIDO1,APELLIDO2,NOMBRE1,NOMBRE2,FEC_NAC DATE 'DD/MM/YYYY',SEXO)