Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Pg. 2/51
Qu es SQL*Loader?
Es otro de los utilitarios proporcionados por
Oracle para cargar datos desde un archivo plano (flat) dentro de uno o mas tablas de una base de datos La base de casi todas las cosas que haga con SQL*Loader es un archivo conocido como control file (archivo de control) SQL*Loader, lee archivos de datos tipo texto y coloca los datos en la base de datos Oracle, de acuerdo con las instrucciones que recibe del archivo de control.
UNIVERSIDAD PRIVADA ANTENOR ORREGO
Escuela de Ingeniera de Computacin y Sistemas
Elmer Gonzlez Herrera BASE DE DATOS - Curso 2009 I
El Escenario de SQL*Loader
Archivo de Control (DDL)
datos
SQL*Loader
datos
registros que causan errores Archivo de Log Log File Archivos de filas rechazadas Bad File
"MI","2 Lake","lake","Marquette","26","103","463827N","0874552W","46.64083","-87.76444","","","","","","","Silver Lake Basin" "MI","3 Lake","lake","Marquette","26","103","463826N","0874535W","46.64056","-87.75972","","","","","","","Silver Lake Basin" "MI","8 Lake","lake","Marquette","26","103","463825N","0874611W","46.64028","-87.76972","","","","","","","Silver Lake Basin" "MI","A C Miller Airport","airport","Hillsdale","26","059","414415N","0843353W","41.7375","84.56472","","","","","944","","Pioneer"
UNIVERSIDAD PRIVADA ANTENOR ORREGO
Escuela de Ingeniera de Computacin y Sistemas
Elmer Gonzlez Herrera BASE DE DATOS - Curso 2009 I
"MI","2 Lake","lake","Marquette","26","103","463827N","0874552W","46.64083","-87.76444","","","","","","","Silver Lake Basin" "MI","3 Lake","lake","Marquette","26","103","463826N","0874535W","46.64056","-87.75972","","","","","","","Silver Lake Basin" "MI","8 Lake","lake","Marquette","26","103","463825N","0874611W","46.64028","-87.76972","","","","","","","Silver Lake Basin" "MI","A C Miller Airport","airport","Hillsdale","26","059","414415N","0843353W","41.7375","84.56472","","","","","944","","Pioneer" "MI","A Pool","reservoir","Schoolcraft","26","153","461458N","0855713W","46.24944","85.95361","","","","","693","","Germfask" "MI","A-Two Pool","reservoir","Schoolcraft","26","153","461642N","0860116W","46.27833","-86.02111","","","","","","","Driggs Lake SE" "MI","ATI Heliport","airport","Wayne","26","163","421315N","0832835W","42.22083","-83.47639","","","","","716","","Belleville"
Como puede ver los datos en el archivo se encuentran delimitados por comas (,), y cada campo esta incluido entre comillas ( ) La tabla siguiente muestra los contenidos y la longitud mxima de cada campo. Usaremos luego las sentencias SQL para crear la tabla en el cual todos los datos ser cargados.
UNIVERSIDAD PRIVADA ANTENOR ORREGO
Escuela de Ingeniera de Computacin y Sistemas
Elmer Gonzlez Herrera BASE DE DATOS - Curso 2009 I
5
6 7 8 9 10
2
3 7 8 8 8
NUMERO DE CAMPO 11 12 13 14 15 16 17
LONGITUD DE CAMPO 7 8 8 8 5 10 30
CONTENIDO Latitud fuente en grados, minutos y segundos Longitud fuente en grados, minutos y segundos Latitud fuente en grados decimales Longitud fuente en grados decimales Elevacin (pies sobre el nivel del mar) Poblacin estimada Nombre del sistema geogrfico norteamericano
Use la prxima sentencia SQL para crear la tabla en el cual todo estos datos debern ser cargados.
CREATE TABLE gnis_nombregeo ( gnis_abrev_estado CHAR(2), gnis_nomb_descrip VARCHAR2(80), gnis_tipo_caracteris VARCHAR2(9), gnis_nomb_condado VARCHAR2(60), gnis_latitud_primaria VARCHAR2(7), gnis_long_primaria VARCHAR2(8), gnis_elevacion NUMBER, gnis_poblacion NUMBER, gnis_nomb_celula VARCHAR2(60) ); Como puede ver, no todos los campos en el archivo de datos van a ser cargados dentro de la tabla.
UNIVERSIDAD PRIVADA ANTENOR ORREGO
Escuela de Ingeniera de Computacin y Sistemas
Elmer Gonzlez Herrera BASE DE DATOS - Curso 2009 I
LOAD DATA APPEND INTO TABLE gnis_nombregeo ( gnis_abrev_estado CHAR TERMINATED BY "," ENCLOSED BY '"', gnis_nomb_descrip CHAR TERMINATED BY "," ENCLOSED BY '"', gnis_tipo_caracteris CHAR TERMINATED BY "," ENCLOSED BY '"', gnis_nomb_condado CHAR TERMINATED BY "," ENCLOSED BY '"', gnis_cod_fed_estado FILLER INTEGER EXTERNAL TERMINATED BY "," ENCLOSED BY '"', gnis_cod_fed_condado FILLER INTEGER EXTERNAL TERMINATED BY "," ENCLOSED BY '"', gnis_latitud_primaria CHAR TERMINATED BY "," ENCLOSED BY '"', gnis_long_primaria CHAR TERMINATED BY "," ENCLOSED BY '"', gnis_latitud_primaria_dec FILLER DECIMAL EXTERNAL TERMINATED BY "," ENCLOSED BY '"', gnis_long_primaria_dec FILLER DECIMAL EXTERNAL TERMINATED BY "," ENCLOSED BY '"', gnis_latitud_fuente FILLER CHAR TERMINATED BY "," ENCLOSED BY '"', gnis_long_fuente FILLER CHAR TERMINATED BY "," ENCLOSED BY '"', gnis_latitud_fuente_dec FILLER DECIMAL EXTERNAL TERMINATED BY "," ENCLOSED BY '"', gnis_long_fuente_dec FILLER DECIMAL EXTERNAL TERMINATED BY "," ENCLOSED BY '"', gnis_elevacion DECIMAL EXTERNAL TERMINATED BY "," ENCLOSED BY '"', gnis_poblacion INTEGER EXTERNAL TERMINATED BY "," ENCLOSED BY '"', gnis_nomb_celula CHAR TERMINATED BY "," ENCLOSED BY '"' )
UNIVERSIDAD PRIVADA ANTENOR ORREGO
Escuela de Ingeniera de Computacin y Sistemas
Elmer Gonzlez Herrera BASE DE DATOS - Curso 2009 I
Tabla GNIS_NOMBREGEO, cargada de cada registro lgico. Opcin INSERT activa para esta tabla: APPEND
Nombre Columna Posicin Long Term Entorno Tipo de Dato ------------------------------ ---------- ----- ---- ---- --------------------GNIS_ABREV_ESTADO FIRST * , " CHARACTER GNIS_NOMB_DESCRIP NEXT * , " CHARACTER GNIS_TIPO_CARACTERIS NEXT * , " CHARACTER GNIS_NOMB_CONDADO NEXT * , " CHARACTER GNIS_COD_FED_ESTADO NEXT * , " CHARACTER (CAMPO FILLER) GNIS_COD_FED_CONDADO NEXT * , " CHARACTER (CAMPO FILLER) GNIS_LATITUD_PRIMARIA NEXT * , " CHARACTER GNIS_LONG_PRIMARIA NEXT * , " CHARACTER GNIS_LATITUD_PRIMARIA_DEC NEXT * , " CHARACTER (CAMPO FILLER) GNIS_LONG_PRIMARIA_DEC NEXT * , " CHARACTER (CAMPO FILLER) GNIS_LATITUD_FUENTE NEXT * , " CHARACTER (CAMPO FILLER) GNIS_LONG_FUENTE NEXT * , " CHARACTER (CAMPO FILLER) GNIS_LATITUD_FUENTE_DEC NEXT * , " CHARACTER (CAMPO FILLER) GNIS_LONG_FUENTE_DEC NEXT * , " CHARACTER (CAMPO FILLER) GNIS_ELEVACION NEXT * , " CHARACTER GNIS_POBLACION NEXT * , " CHARACTER GNIS_NOMB_CELULA NEXT * , " CHARACTER Registro 1001: Rechazado - Error en tabla GNIS_NOMBREGEO, columna GNIS_ABREV_ESTADO. Columna no encontrada antes del fin de registro lgico (utilice TRAILING NULLCOLS)
UNIVERSIDAD PRIVADA ANTENOR ORREGO
Escuela de Ingeniera de Computacin y Sistemas
Elmer Gonzlez Herrera BASE DE DATOS - Curso 2009 I
Tabla GNIS_NOMBREGEO: 1000 Filas se ha cargado correctamente. 1 Fila no cargada debido a errores de datos. 0 Filas no cargada porque todas las clusulas WHEN han fallado. 0 Filas no cargada porque todos los campos eran nulos.
Total de registros lgicos ignorados: 0 Total de registros lgicos ledos: 1001 Total de registros lgicos rechazados: 1 Total de registros lgicos desechados: 0 La ejecucin empez en Dom Jul 01 21:13:11 2007 La ejecucin termin en Dom Jul 01 21:13:21 2007 Tiempo transcurrido: 00:00:09.87 Tiempo de CPU: 00:00:00.17
Parte 1: LOAD DATA sirve como punto de partida para el resto del archivo. Parte 2: INFILE esta lnea nombra el archivo de entrada. Se pueden cargar varios archivos de datos en la misma sesin especificando varias sentencias INFILE: INFILE midata1.dat INFILE midata2.dat Parte 3: INTO TABLE esta lnea instruye a SQL*Loader sobre donde colocar los datos cuando se cargan en Oracle. Existen 4 modificadores para esta orden:
1. INSERT indica que la tabla estar vaca cuando comience la carga 2. APPEND aade nuevas filas al contenido existente en la tabla 3. REPLACE usa una sentencia SQL DELETE para borrar las filas de la tabla y carga las nuevas filas 4. TRUNCATE usa una sentencia SQL TRUNCATE para eliminar todos los datos existentes desde las tablas siendo cargadas, se comporta igual que REPLACE.
Parte 4: Especificaciones de columna y campo en esta seccin del archivo de control establece la correspondencia entre los caracteres del archivo de entrada y las columnas de la tabla de destino. Ejemplo: (enumero enombre cargo administrador salario comision numeroDpto
UNIVERSIDAD PRIVADA ANTENOR ORREGO
Escuela de Ingeniera de Computacin y Sistemas
Elmer Gonzlez Herrera BASE DE DATOS - Curso 2009 I
El archivo log ( .log ) es un archivo histrico que almacena informacin referente a las operaciones de carga de datos. El archivo de filas rechazadas ( .bad ) es un archivo que registra las filas daadas provenientes del proceso de tomar los registros del archivo de datos para insertarlos en la tabla de base de datos, esto sucede cuando no existe equivalencias de datos de los registros fuentes con los registros destinos. El archivo de filas descartadas ( .dsc ) es un archivo que registra las filas desechadas por no cumplir con las condiciones impuestas dentro del archivo de control
Este archivo de datos es el indicado para una tabla concreta que tenga la misma estructura de campos, como podra ser lo siguiente:
UNIVERSIDAD PRIVADA ANTENOR ORREGO
Escuela de Ingeniera de Computacin y Sistemas
Elmer Gonzlez Herrera BASE DE DATOS - Curso 2009 I
Como vemos en el archivo de datos, todos los campos de cada registro coinciden perfectamente con el respectivo campo de la tabla (a la que hemos llamado personas)
decimal external le dice al SQL*Loader que un campo es un valor decimal representado usando los dgitos texto del 0 al 9 y un punto decimal opcional (.).
SQL> select * from cargador; ID NOMBRE ---------- -------------------1 Antonio 2 Miguel 3 Luis TIPO ---------cliente socio gerente
5
7782 7839 7934 7566 7499 7654 7658
12
27
7839 7542 7782 7839 7698 7810 7566
33
41
50
10 10 10 20 30 30 20
apellido
ID de administrador
fecha de contrato
INTO TABLE empleados (enumero position(01:05), enombre position(07:12), cargo position(14:27), administrador position(29:34), salario position(36:43), fechaCont position(45:52) date DD-MM-YY, numeroDpto position(54:55))
A:\>describe hawb Table or View hawb Name Null? hawb_no hawb_origen hawb_destino hawb_remitente
UNIVERSIDAD PRIVADA ANTENOR ORREGO
Escuela de Ingeniera de Computacin y Sistemas
Elmer Gonzlez Herrera BASE DE DATOS - Curso 2009 I
LOAD DATA INFILE * APPEND INTO TABLE cuentas FIELDS TERMINATED BY , OPTIONALLY ENCLOSED BY (clie_num, cuen_num, cuen_nombre) BEGINDATA 0000324,89073,AHORROS 0000324,89074,CHEQUES 0000075,111,AHORROS 0011102,800,CHEQUES 0000068,23338,CHEQUES