sql loader ms xp
TRANSCRIPT
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
Fundamentos, Diseño,
e Implementación, 7/e
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
Pág. 2/51
En este capítulo, usted aprenderá:
SQL* Loader
El Misterioso Control File
Campos y Tipos de Datos
Carga de archivos de longitud fija
Carga de datos delimitados
Validación y Selección de datos cargados
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
¿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 ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
El Escenario de SQL*Loader
SQL*LoaderArchivo de
Datos de
INPUT
Base de
Datos
ORACLE
Archivo
de Control
(DDL)
Archivos
de filas
descartadas
Archivo
de Log
Archivos
de filas
rechazadas
datos datos
Discard File Log File Bad File
registros no seleccionados
para el cargado
registros que
causan errores
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
Un Pequeño Ejemplo de SQL*Loader
"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"
• Los Datos: un archivo texto con las descripciones geográficas del estado de Michigan, USA.
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
• 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 máxima de cada campo.• Usaremos luego las sentencias SQL para crear la tabla en el cual todos los datos será cargados.
"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"
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
• El archivo GNIS (sistema de información de nombres geográficos), tiene la siguiente característica:
Descripción de los Campos del archivo GNIS
NUMERODE CAMPO
LONGITUDDE CAMPO
CONTENIDO
1 2 Código de estado alfanumérico
2 60 Nombre geográfico característico
3 9 Tipo característico
4 35 Nombre del condado
5 2 Código Federal del estado
6 3 Código Federal del condado
7 7 Latitud primaria en grados, minutos y segundos
8 8 Longitud primaria en grados, minutos y segundos
9 8 Latitud primaria en grados decimales
10 8 Longitud primaria en grados decimales
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
NUMERODE CAMPO
LONGITUDDE CAMPO
CONTENIDO
11 7 Latitud fuente en grados, minutos y segundos
12 8 Longitud fuente en grados, minutos y segundos
13 8 Latitud fuente en grados decimales
14 8 Longitud fuente en grados decimales
15 5 Elevación (pies sobre el nivel del mar)
16 10 Población estimada
17 30 Nombre del sistema geográfico norteamericano
• Use la próxima sentencia SQL para crear la tabla en el cual todo estos datos deberán ser cargados.
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
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 ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
• El siguiente Control File será usado para cargar datos de
nombres geográficos característicos para el estado de Michigan• El comando LOAD DATA le dice al SQL*Loader que va a cargar datos desde un archivo del sistema operativo hacia una tabla de la base de datos Oracle.• La tabla destino es identificada por la claúsula INTO TABLE:
APPEND INTO TABLE gnis_nombregeo
• APPEND le dice a SQL*Loader que preserve cualquier pre-existente dato en la tabla
El archivo de Control (Control File)
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González 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 ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
• El comando usado para iniciar esta carga necesita invocar a SQL*Loader y apuntar al archivo de control (control file) que
describirá los datos.• Desde que el nombre del archivo de entrada no esta proveido en control file, el nombre tambien necesita ser pasado en el comando de línea:
La Línea de Comando (sqlldr)
sqlldr instructor/oracle@orcl control=c:\gnis.ctl log=c:\gnis.log data=c:\gnisdata.dat
password
user name control file
database name
log file
data file
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
El Archivo LOG (log file)
SQL*Loader: Release 10.2.0.3.0 - Production on Dom Jul 1 21:13:11 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Archivo de Control: f:\gnis\gnis.ctl
Archivo de Datos: f:\gnis\gnisdata.dat
Archivo de Errores: f:\gnis\gnisdata.bad
Desechar Archivo: ninguno especificado
(Permitir todos los registros desechados)
Número a cargar: ALL
Número a ignorar: 0
Errores permitidos: 50
Matriz de enlace: 64 filas, máximo de 256000 bytes
Continuación: ninguno especificado
Ruta de acceso utilizada: Convencional
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
Tabla GNIS_NOMBREGEO, cargada de cada registro lógico.
Opción INSERT activa para esta tabla: APPEND
Nombre Columna Posición 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 lógico (utilice TRAILING NULLCOLS)
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González 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 cláusulas WHEN han fallado.
0 Filas no cargada porque todos los campos eran nulos.
Espacio asignado a matriz de enlace: 148608 bytes (64 filas)
Bytes de buffer de lectura: 1048576
Total de registros lógicos ignorados: 0
Total de registros lógicos leídos: 1001
Total de registros lógicos rechazados: 1
Total de registros lógicos desechados: 0
La ejecución empezó en Dom Jul 01 21:13:11 2007
La ejecución terminó en Dom Jul 01 21:13:21 2007
Tiempo transcurrido: 00:00:09.87
Tiempo de CPU: 00:00:00.17
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
Carga de Datos: SQL*Loader
•El archivo de control (.ctl ) le comunica a SQL*Loader el proceso de interpretación los registros de datos que va leyendo del archivo de datos de INPUT. Este archivo provee la siguiente información al SQL*Loader:
•el nombre y localización del archivo de datos de input
• el formato de los registros en el archivo de datos de input.
• el nombre de la tabla o tablas a ser cargadas
• la correspondencia entre los campos en el registro de input y las
columnas en las tablas de la base de datos siendo cargada
• criterio de selección definiendo cuales de los registros del
archivo de input contienen datos a ser insertados dentro de las
tablas de la base de datos destino
• los nombres y localizaciones del bad file y del discard file
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
C:\ edit personas.ctl
-- Note, esto es como se empotra comentarios
-- en un archivo de control SQL*LoaderLOAD DATA -- parte 1
INFILE „personas.dat‟ -- parte 2
INTO TABLE personas -- parte 3
(nombre position (1:14) char, -- inicio de parte 4
apellido position (15:26) char,
numclase position (29:36) char,
fecha_contrato position (37:42) date “DD-MON-YY”)
C:\
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
Parte 1: LOAD DATA sirve como punto de partida para el resto
del archivo.
Parte 2: INFILE esta línea nombra el archivo de entrada. Se
pueden cargar varios archivos de datos en la misma sesión
especificando varias sentencias INFILE:
INFILE „midata1.dat‟
INFILE „midata2.dat‟
Parte 3: INTO TABLE esta línea instruye a SQL*Loader sobre
donde colocar los datos cuando se cargan en Oracle. Existen 4
modificadores para esta orden:
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
1. INSERT indica que la tabla estará vacía cuando comience
la carga
2. APPEND añade 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.
Normalmente no se incluye el calificador INSERT, ya que
es el valor predeterminado o default
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
Parte 4: Especificaciones de columna y campo en esta
sección del archivo de control establece la correspondencia
entre los caracteres del archivo de entrada y las columnas
de la tabla de destino. Ejemplo:
(enumero position (01:04),
enombre position (06:15),
cargo position (17:25),
administrador position (27:30),
salario position (32:39),
comision position (41:48),
numeroDpto position (50:51))
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
• El archivo log ( .log ) es un archivo histórico que almacena
información referente a las operaciones de carga de datos.
• El archivo de filas rechazadas ( .bad ) es un archivo que
registra las filas dañadas 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
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
Proceso de Cargado de Datos
Traspasar o migrar datos desde un sistema existente a un
escenario Oracle conlleva dos pasos:
1. Crear una copia del archivo de texto que contiene los
datos existentes (no Oracle), utilizando el software actual.
2. Cargar los datos desde dicho archivo de texto a Oracle
por medio de SQL*Loader.
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
Ejemplo de Cargado de Datos (1/4)
• Supongamos que tenemos un archivo de datos plano (flat) o
archivo de datos de input (adi), „datos.dat‟, cuyo contenido es
el siguiente:
1#Antonio#cliente#
2#Miguel#socio#
3#Luis#gerente#
• Este archivo de datos es el indicado para una tabla concreta
que tenga la misma estructura de campos, como podría ser lo
siguiente:
registro 1
registro 2
registro 3
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
Ejemplo de Cargado de Datos (2/4)
SQL> describe personas
Nombre ¿Nulo? Tipo
-------------------------------- -------------- ----------------------------
ID NOT NULL NUMBER(1)
NOMBRE NOT NULL VARCHAR2(20)
TIPO NOT NULL VARCHAR2(10)
• 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)
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
Ejemplo de Cargado de Datos (3/4)
•Si queremos realizar la carga de los tres registros
almacenados, necesitaríamos hacer un archivo de control
(CONTROL.CTL) cuyo contenido podría ser el siguiente:
LOAD DATA
INFILE „a:\datos.dat‟
INTO TABLE personas
fields terminated by “#”
(id integer external,
nombre char,
tipo char)
le dice al SQL*Loader que un campo es
el entero representado usando los
dígitos texto del “0” al “9”
le dice al SQL*Loader que un campo es un
valor decimal representado usando los
dígitos texto del “0” al “9” y un punto
decimal opcional (“.”).
decimal external
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
Ejemplo de Cargado de Datos (4/4)
• Con todo lo anterior ya podríamos invocar al utilitario sqlldr para que realizara la carga del archivo de datos en la tabla personas para ello, desde la línea de comandos del sistema operativo, lanzaríamos la siguiente sentencia:A:\>sqlldr “username”/”password” control = a:\file.ctl log = a:\file.log bad = a:\file.bad discard = a:\file.dsc
username = nombre del usuario
password = clave del usuario
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
Ejecución de una operación con SQL*Loader
C:\>sqlldr alumno/oracle control=a:\file.ctl log=a:\file.log bad=a:\file.bad
discard=a:\file.dsc
SQL*Loader: Release 8.1.7.0.0 - Production on Mié Jun 19 03:28:03 2002
(c) Copyright 2000 Oracle Corporation. All rights reserved.
Punto de validación alcanzado - recuento de registros lógicos 2
Punto de validación alcanzado - recuento de registros lógicos 3
C:\>
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
Datos Cargados con SQL*Loader
SQL> select * from cargador;
ID NOMBRE TIPO
---------- -------------------- ----------
1 Antonio cliente
2 Miguel socio
3 Luis gerente
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
Modo de Carga de Datos
•El utilitario SQL*Loader tiene dos modos de operación:
Modo convencional y Modo directo
•Modo Convencional
Este método que usa SQL*Loader por defecto (parámetro
DIRECT=FALSE), el cual usa sentencias SQL de inserción
para introducir los registros del fichero de datos en las tablas
de la base de datos. Método más lento que el directo
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
Modo de Carga de Datos (cont.)
•Modo Directo
Usando este modo (parámetro DIRECT=TRUE), el utilitario no
construye sentencias SQL para insertar los registros del fichero
de datos en las tablas de la base de datos, sino que analiza
cada uno de los registros para convertirlos, campo a campo, en
sus correspondientes tipos de datos de la tabla, construyendo
así una estructura diferente de inserción
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
Cargando Datos: Ejemplo 1
• pretendemos hacer una carga de gran tamaño y que se
requieren ejecutar múltiples sesiones de carga a un
mismo tiempo.
Componente ValorNombre del usuario smith
Password baby
Archivo de control portnoy
Load todos los registros
Parallel sí
Direct no
Sqlldr smith/baby control = portnoy parallel = true
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
Cargando Datos: Ejemplo 2
• hacer una carga de 1,000 registros adicionales. En una sesión anterior
se cargaron los registros comprendidos entre 1 y 499. Para acelerar las
cosas, deseamos utilizar un camino de carga directa con sesiones
paralelas
Componente Valor
Nombre del usuario esther
Password koolmarzo
Archivo de control kool2004.crl
Skip 500
Direct sí
Load 1000
Parallel sí
sqlldr esther/koolmarzo control = kool2004.crl parallel = true direct = true skip = 500 load = 1000
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
Cargando Datos: Ejemplo 3
• deseamos cargar los números de registro 501 a 520,
utilizando el mecanismo de cargas directas
Componente Valor
Nombre del usuario janet
Skip 500
Direct sí
Load 20
sqlldr janet direct=true skip=500 load=20
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
Carga de Datos de Longitud Fija: Ejemplo 4
7782 CLARK administrador 7839 2572.50 15/11/01 107839 REYES presidente 7542 5500.00 12/10/02 107934 MILLER empleado 7782 920.00 08/06/03 107566 JONES administrador 7839 3123.75 10/07/03 207499 ALVA vendedor 7698 820.00 02/08/03 307654 MARTIN vendedor 7810 1400.00 02/02/04 307658 CHANG analista 7566 3450.00 06/06/04 20
5 12 27 33 41 50
identificación
apellido
cargo
ID de administrador
sueldo
fecha de contrato
ID de departamento
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
• muestra del archivo de control SQL*Loader = archivo.ctl:LOAD DATA
INFILE „a:\cargame.dat‟ nombre del fichero conteniendo los
datos a ser cargados
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))
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
Carga de Datos de Longitud Variable: Ejemplo 5
A:\>describe hawb
Table or View hawb
Name Null? Type
hawb_no varchar2(10)
hawb_origen varchar2(10)
hawb_destino varchar2(10)
hawb_remitente varchar2(80)
Los datos consisten de dos registros que se cargaran en
la tabla.
7457820812,,‟BAH‟,”PROPULSION PACIFICO INC”
989714666,”LAX”,”BRU”,”SERVICIO DE MOTORES”
registro 1
registro 2
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
El archivo de Control que se usará es:
LOAD DATA
INFILE „a:\4104.dat‟
BADFILE „a:\hawb.bad‟
DISCARDFILE „a:\hawb.dsc‟
APPEND
INTO TABLE hawb
FIELDS TERMINATED BY „,‟ OPTIONALLY ENCLOSED BY “ “
TRAILING NULLCOLS
(hawb_no,
hawb_origen,
hawb_destino,
hawb_remitente)
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González Herrera BASE DE DATOS - Curso 2009 I
En este ejemplo se muestra que no es necesario que los
datos se encuentren en un archivo de datos; se puede
empotrar en un archivo de control. La palabra BEGINDATA
indica que todas las líneas que le siguen son registros de
datos que se deben usar como el origen de entrada de este
archivo de control.
El archivo de control siguiente es un ejemplo para este tipo de
carga:
Carga con Datos Empotrados: Ejemplo 6
UNIVERSIDAD PRIVADA ANTENOR ORREGOEscuela de Ingeniería de Computación y SistemasElmer González 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