Permítame mostrarle un ejemplo de un archivo de control que uso para cargar un archivo muy grande (120 millones de registros cada día)
OPTIONS (SKIP=0, ERRORS=500, PARALLEL=TRUE, MULTITHREADING=TRUE, DIRECT=TRUE, SILENT=(ALL))
UNRECOVERABLE
LOAD DATA
CHARACTERSET WE8ISO8859P1
INFILE '/path_to_your_file/name_of_the_file.txt'
BADFILE '/path_to_your_file/name_of_the_file.bad'
DISCARDFILE '/path_to_your_file/name_of_the_file.dsc'
APPEND
INTO TABLE yourtablename
TRAILING NULLCOLS
(
COLUMN1 POSITION(1:4) CHAR
,COLUMN2 POSITION(5:8) CHAR
,COLUMN3 POSITION(9:11) CHAR
,COLUMN4 POSITION(12:18) CHAR
....
....)
Algunas consideraciones
- Siempre es más rápido cargar por posiciones que usando delimitadores
- Usar las opciones de
PARALLEL
,MULTITHREADING
yDIRECT
para optimizar el rendimiento de carga. UNRECOVERABLE
también es un buen consejo si siempre tiene el archivo en caso de que necesite recuperar la base de datos, tendrá que cargar los datos nuevamente.- Utilice el juego de caracteres apropiado.
- La cláusula TRAILING NULLCOLS le dice a SQL*Loader que trate cualquier columna posicionada relativamente que no esté presente en el registro como columnas nulas.
- Posición significa que cada fila contiene datos sin ningún delimitador, por lo que conoce la posición de cada campo en la tabla por la longitud.
AAAAABBBBBBCCCCC19828733UUUU
- Si su archivo txt o csv tiene un separador de campo, digamos punto y coma, entonces necesita usar
FIELDS DELIMITED BY
Esto se almacena en un archivo de control, normalmente un archivo de texto con extensión ctl. Luego invocas desde la línea de comando
sqlldr userid=youuser/[email protected]_string control=/path_to_control_file/control_file.ctl