El Fichero Log.
El archivo log es una copia de la actividad producida durante la carga de datos, contiene la siguiente información:
- Nombre del archivo de control, archivo log, archivo erróneo, archivo descartado, archivo de datos.
- Valor de distintos parámetros de la línea de comando.
- Detalle de los campos y tipo de datos contenidos en el archivo de datos cargado.
- Mensajes de error cuando los datos han causado errores.
- Mensajes indicando que determinados datos han sido descartados.
- Un resumen de la carga realizada incluyendo el número de datos leídos desde el archivo de datos, el número de columnas rechazadas por causa de errores, numero de columnas rechazadas por el criterio de selección, y por el tiempo transcurrido de la carga.
Es conveniente revisar este archivo después de realizar una carga de datos, ya que esta información no se nos mostrara por pantalla al finalizar la carga.
Ejemplo de Archivo LOG:
Control File: ejemplo4.ctl
Data File: ejemplo4.dat
Bad File: ejemplo4.bad
Discard File: ejemplo4.dis
(Allow 999 discards) → por defecto
Number to load: ALL
Number to skip: 0 → registros o atributos que no quieren cargarse
Errors allowed: 50 → por defecto
Bind array: 64 rows, maximum of 65536 bytes
Path used: Convencional → significa que se ha usado in INSERT en la carga
Bind array es un área de memoria donde SQL*LOADER almacena datos para filas que serán insertadas en la base de datos. Cuando el bind array se llena, SQL*Loader inserta los datos en el la tabla y luego ejecuta un COMMIT.
Column Name Position Len Term Encl Datatype ---------- ----- ---- ---- ---------------- EMPNO 1:4 4 CHARACTER ENAME 6:15 10 CHARACTER JOB 17:25 9 CHARACTER MGR 27:30 4 CHARACTER SAL 32:39 8 CHARACTER COMM 41:48 8 CHARACTER DEPTNO 50:51 2 CHARACTER HIREDATE 52:60 9 CHARACTER → Esta parte indica los datos (FILLER FIELD) cargados y si hay datos que existían anteriormente Record 8: Rejected - Error on table EMP. ORA-01400: cannot insert NULL into ("SCOTT"."EMP"."EMPNO") → errores Record 9: Rejected - Error on table EMP. ORA-00001: unique constraint (SCOTT.EMPIX) violated 7 Rows successfully loaded. 2 Rows not loaded due to data errors. 0 Rows not loaded because all WHEN clauses were failed. 0 Rows not loaded because all fields were null. Space allocated for bind array: 65520 bytes(910 rows) Space allocated for memory besides bind array: 0 bytes Total logical records skipped: 0 Total logical records read: 9 Total logical records rejected: 2 Total logical records discarded: 0 Run began on Sun Nov 08 11:49:42 1998 Run ended on Sun Nov 08 11:49:42 1998 Elapsed time was: 00:00:00.69 CPU time was: 00:00:00.13
Ejemplo de Carga de datos de longitud Variable
Creacion en Oracle de la tabla personas
CREATE TABLE personas (id_persona NUMBER CONSTRAINT persona_pk PRIMARY KEY, nombres VARCHAR2(15) CONSTRAINT persona_nombres_nn NOT NULL, apellidos VARCHAR2(15) CONSTRAINT persona_apellidos_nn NOT NULL, nacionalidad VARCHAR2(30) CONSTRAINT persona_nacio_nn NOT NULL, tipo_documento VARCHAR(12) CONSTRAINT persona_tipo_dcto_nn NOT NULL, numero_documento VARCHAR(12) CONSTRAINT persona_num_dcto_nn NOT NULL, CONSTRAINT persona_tipo_num_dcto_nd UNIQUE (tipo_documento, numero_documento), fecha_nacimiento DATE CONSTRAINT persona_fecha_nac_nn NOT NULL, sexo CHAR CONSTRAINT persona_sexo_nn NOT NULL CONSTRAINT persona_sexo_cc CHECK (sexo IN ('f', 'm') ) ) ; CREATE SEQUENCE cons_persona;
Creación del archivo de texto:
Tenemos que tener en cuenta que cada línea es un registro, por eso hay que tener precaución de no dejar líneas en blanco, porque esto generaría errores.
Creamos la tabla en Excel y la guardamos en formato csv, que permitirá que los campos sean separados por comas
Al abrir el archivo en el block de notas lo veremos de la siguiente manera:
Creación del archivo de control:
Abrimos el block de notas, colocamos las siguientes líneas y lo guardamos en formato .CTL
Aclaraciones:
OPTIONS (SKIP=1) → Ignorara el primer registro (Encabezado)
APPEND → Mantendrá datos existentes de la tabla
WHEN (nacionalidad=’Colombiano’) → Ignorara los registros cuya nacionalidad no sea Colombiano.
Realizamos la carga de datos de la siguiente forma:
sqlldr scott/tiger@oracle control=C:\SQL_LOADER\control.ctl log=c:\SQL_LOADER\personas.log data=c:\SQL_LOADER\personas.csv
Fichero log creado:
Datos cargados: