Está en la página 1de 32

Carga de datos externos en Oracle

1
Carga de datos externos en Oracle

Carga de registros
Carga de registros
1. Carga convencional  (sentencia INSERT) 
– Los registros son leídos y emplazados en un 
buffer temporal
– Cuando el buffer está lleno, los registros se 
p
pasan a Oracle para la inserción en tabla
p
– Mantiene la integridad referencial 
– Se usa para un número pequeño de registros a 
Se usa para un número pequeño de registros a
cargar

2
Carga de datos externos en Oracle

Carga de registros
Carga de registros Ej
Ejemplos I
l I
1. Carga convencional  (sentencia INSERT) 
– Carga de valores 
INSERT INTO emp
p (
(id,
, name,
, sal,
, comm,
, deptno)
p )
VALUES (4160, ‘ADRIAN', 2045, NULL, 30);

– Carga desde consulta 

INSERT INTO bbonus SELECT name, sal,


l comm FROM
emp WHERE comm > sal * 0.25;
– Carga a varias tablas 
Carga a varias tablas
3
Carga de datos externos en Oracle

Carga de registros
Carga de registros Ej
Ejemplos II
l II
1. Carga convencional  (sentencia INSERT) 
– Carga a varias tablas 
INSERT ALL
WHEN order_total < 1000000 THEN INTO
small_orders
WHEN order_total
order total > 1000000 AND order_total
order total <
2000000 THEN INTO medium_orders
WHEN order_total > 2000000 THEN INTO
large orders
large_orders

SELECT order_id, order_total, sales_rep_id,


customer_id FROM orders;
4
Carga de datos externos en Oracle

Carga de registros
Carga de registros
1. Carga convencional  (sentencia INSERT) 
2. Carga directa 
– Es mas rápido
p que la carga
q g convencional
– Se escribe directamente en los bloques de la BD, sin 
pasar por la caché de buffer
– No se comprueba la integridad referencial
– Se ejecuta
j como una transacción atómica
3. Import/Export
4 SQL*Loader
4. SQL*L d
5
Carga de datos externos en Oracle

Carga de registros
Carga de registros
1. Carga convencional  (sentencia INSERT) 
2. Carga directa 
3 Import/Export
3.
– Es la utilidad más antigua de Oracle 
– Permite extraer y cargar tablas, objetos o la BD 
completa
4. SQL*Loader

6
Carga de datos externos en Oracle

Requisitos de carga
Requisitos de carga
• Las tablas que van a recibir los datos han de 
existir en la BD
• El usuario que va a realizar la carga, debe 
El usuario que va a realizar la carga, debe
tener los permisos de inserción sobre las 
tablas en las que se van a insertar los datos
tablas en las que se van a insertar los datos
• Si se va a realizar la carga con la opción 
reemplazar, se debe tener el permiso de 
borrado sobre las tablas involucradas
7
Carga de datos externos en Oracle
La herramienta SQL*Loader
• Herramienta estándar para la carga de datos desde 
ficheros externos a tablas de una base de datos
ficheros externos a tablas de una base de datos 
Oracle
• Características:
– Carga de datos desde ficheros de textos
– Carga a una o varias tablas de la BD a la vez
– Permite establecer condiciones sobre los datos a cargar y 
realizar transformaciones
– Cargas simultáneas, automatizadas
Cargas simultáneas, automatizadas
– Permite la carga de objetos complejos  
– Genera informes detallados de la carga realizada
– Comprueba que se cumplan las restricciones de 
integridad 8
Carga de datos externos en Oracle
Ficheros que intervienen en la ejecución de 
SQL*Loader
• Fichero de Control → Fichero donde se indica el 
Fichero de Control → Fichero donde se indica el
formato de los datos
Fichero de Datos → Fichero con los datos que 
• Fichero de Datos Fichero con los datos que
deben ser cargados en las tablas Oracle
• Fichero de Log → Contiene las estadísticas de carga
• Fichero de Error → Contiene los registros 
incorrectos que no han sido cargados
• Fichero de Descartados → Contiene los registros 
que no cumplen los filtros  o criterios de selección

10
Carga de datos externos en Oracle

La herramienta SQL*Loader

• Para
Para proceder a la carga a través de éste programa,  
proceder a la carga a través de éste programa
ha de realizarse la siguiente llamada:
sqlldr <opciones>
• Opciones representa una serie de parámetros que 
se especifican con el formato:
ifi lf
Nombre de parámetro=
parámetro valor

11
Carga de datos externos en Oracle
La herramienta SQL*Loader ‐ Parámetros

→ USERID: Usuario/Contraseña
→ CONTROL: Nombre del fichero de control
CONTROL: Nombre del fichero de control
→ LOG: Fichero de log 
→ DATA:  Nombre del fichero de datos
→ BAD: Registros mal formateados 
lf d
→ DISCARD: Registros que no ha aceptado la BD
→ ERRORS: Número de errores permitidos
ERRORS: Número de errores  permitidos 
→ LOAD: Número máximo de registros (lógicos) a  cargar
→ SKIP: Número de registros a saltar
→ BINDSIZE tamaño en bytes del buffer de carga
BINDSIZE: tamaño en bytes del buffer de carga 
→ ROW: tamaño en filas del buffer de carga
→ DIRECT: Carga directa (true)

12
Carga de datos externos en Oracle

La herramienta SQL*Loader ‐ Ejemplo

sqlldr
q
userid=usuario@servicio/contraseña
control=archivo_control.ctl
log=carga1.log

• Para ejecutar SQL*Loader ha de escribirse el 
comando sqlldr desde una interfaz de 
comando sqlldr desde una interfaz de
comandos del S.O.

13
Carga de datos externos en Oracle
La herramienta SQL*Loader
El fichero de datos
• Almacena
Almacena los registros de datos que deben ser 
los registros de datos que deben ser
cargados en la base de datos
• Los datos ha cargar pueden encontrase en dos 
Los datos ha cargar pueden encontrase en dos
sitios:
– Dentro del fichero de control
– En uno o varios ficheros diferentes al de control
• Los registros pueden tener dos formatos
– Fijos: Los datos del registro tienen todos la misma 
longitud, tipo y posición
– Variables: Los campos pueden tener distinta longitud. Se 
Variables: Los campos pueden tener distinta longitud. Se
utiliza un separador de campos(Ej. ‘;’)
14
Carga de datos externos en Oracle
La herramienta SQL*Loader
El fichero de Control
• Fichero de texto con extensión .ctl
• Controla la sesión de carga 
Controla la sesión de carga
– Nombre de los ficheros de datos
– Tablas y columnas destino
Tablas y columnas destino
– Asignación de los campos a columnas 
– Formato de los datos
F d l d
– Identificación de inicio y fin de campo
– Ficheros de log y de error
15
Carga de datos externos en Oracle
La herramienta SQL*Loader
h * d

Estructura del fichero de Control
• LOAD DATA al principio del fichero
• INFILE * en el caso de que los datos de carga 
se encuentren en el fichero de control
• Ejemplo:
l
LOAD DATA
INFILE *
INTO TABLE personal

BEGINDATA
1;Manuel;
2;Ana;
16
Carga de datos externos en Oracle
La herramienta SQL*Loader
h * d

Estructura del fichero de Control
• [INFILE namefile
[BADFILE Fichero b]
[DISCARDFILE Fichero_d]
..]
en el caso de que los datos de carga se encuentren en 
un fichero de datos llamado namefile
f
• Ejemplo:
LOAD DATA
INFILE *
INFILE clientes2
INTO TABLE personal

17
Carga de datos externos en Oracle
La herramienta SQL*Loader
h * d

Estructura del fichero de Control

• Respecto al método de carga
p g
– INSERT: la tabla debe estar vacía 
y g
– REPLACE: se borran los datos existentes y carga los 
C
nuevos datos
– APPEND: se añaden los datos a la tabla 
• Ejemplo:
LOAD DATA
INFILE clientes1 BADFILE=fbad
DISCARDMAX=20
INSERT
INTO TABLE personal
18

Carga de datos externos en Oracle
La herramienta SQL*Loader
h * d

Estructura del fichero de Control
• Delimitadores por defecto
– Se utiliza la cláusula FIELDS para indicar que todos los 
campos terminan por un determinado símbolo
• Ejemplo:
Ej l
LOAD DATA
INFILE * BADFILE=fbad
APPEND
INTO TABLE personal
FIELDS TERMINATED BY ‘;’
;

BEGINDATA
1;Manuel;
2;Ana;
19
Carga de datos externos en Oracle
La herramienta SQL*Loader
h * d

Estructura del fichero de Control
• Campos en el fichero
– Ha de especificarse la correspondencia entre los campos 
del fichero y las columnas de la tabla
• Ejemplo:
Ej l
LOAD DATA
INFILE * BADFILE=fbad
APPEND
INTO TABLE personal
FIELDS TERMINATED BY ‘;’
;
(id,nombre)

BEGINDATA
12;Manuel;
20
24;Ana;
Carga de datos externos en Oracle
La herramienta SQL*Loader
h * d

Estructura del fichero de Control
• Posición de los Campos en el fichero
– Si el fichero es de tamaño fijo se indica en cada campo 
las posiciones que ocupa
• Ejemplo:
Ej l
LOAD DATA
INFILE * BADFILE=fbad
APPEND
INTO TABLE personal
(id POSITION (01:02),nombre POSITION
(03:23))

BEGINDATA
12Manuel
24Ana 21
Carga de datos externos en Oracle
La herramienta SQL*Loader
h * d

Estructura del fichero de Control
• Formatos de fechas
– LLos campos que almacenan fechas pueden ser cargados en 
l f h d d
una gran multitud de formatos
• Ejemplo:
LOAD DATA

INTO TABLE personal
FIELDS TERMINATED BY ‘,’
(id,
fecha alta DATE(8) ‘DD/MM/YY’)
fecha_alta DD/MM/YY )

BEGINDATA
12 02/06/2006
12,02/06/2006,
24,10/10/2004,
22
Carga de datos externos en Oracle
La herramienta SQL*Loader
h * d

Estructura del fichero de Control
• Cargas múltiples  → Extraer varios registros lógicos desde 
uno físico
uno físico
• Ejemplo:
LOAD DATA

INTO TABLE personal
(id POSITION (
( (01:02),
),
name POSITION (03:12))
INTO TABLE personal
(id POSITION (
( (13:14),
),
name POSITION (15:24))

BEGINDATA
G
12Juan 25María
24Ana 80Miguel 23
Carga de datos externos en Oracle
La herramienta SQL*Loader
h * d

Estructura del fichero de Control

• Cargas múltiples →Es posible cargar datos en diferentes tablas
• Ejemplo:
LOAD DATA

INTO TABLE personal
WHEN tipo=P
(tipo POSITION (01:01),
id POSITION (01:02),
name POSITION (03:12))
INTO TABLE clientes
(tipo POSITION (01:01),
id POSITION (13:14),
(13 14)
name POSITION (15:24))

BEGINDATA
C2Juan
P4Ana 24
Carga de datos externos en Oracle

La herramienta SQL*Loader
El fichero de LOG

• Cuando SQL*Loader comienza la ejecución, 
crea un fichero de log
crea un fichero de log
• Contiene información de la carga
• Información de los errores

25
Carga de datos externos en Oracle
La herramienta SQL*Loader
El fichero de registros erróneos
• Contiene los registros rechazados en la carga
– Formato de registro no válido
g
– Intento de cargar un registro que provoca 
duplicidad de clave primaria
p p
– Paso de valor nulo a columna con restricción 
NOTNULL
• Este fichero puede ser fichero de datos d 
carga una vez subsanados los errores
carga una vez subsanados los errores
26
Carga de datos externos en Oracle

La herramienta SQL*Loader
El fichero de registros descartados

• Contiene los registros que no han pasado el 
filtro impuesto en el criterio de selección
filtro impuesto en el criterio de selección 
especificado en el fichero de control

27
Carga de datos externos en Oracle

La herramienta Import/Export
• Se utiliza para las siguientes tareas:
– Archivar datos
– Hacer copias de seguridad
– R t
Restaurar la base de datos
l b d d t
– Mover datos de un usuario a otro
– …
• Para mostrar la ayuda:
Imp help= Y
Exp help= Y

28
Carga de datos externos en Oracle

La herramienta Import/Export
• Export
– Permite escribir datos de una BD Oracle en 
ficheros en formato binario
– Estos ficheros solo pueden ser leídos con la 
utilidad Import
– Ejemplo 
exp
userid=usuario/contraseña@servicio
owner=(usuario)
fil
file=namefilefil
Se exportan los objetos del usuario 29
Carga de datos externos en Oracle

La herramienta Import/Export – Parámetros
• USERID ‐Nombre, contraseña y servicio bajo los que se realiza la 
exportación 
exportación
• FILE ‐ Nombre del archivo en el que se exportan los datos 
• FULL ‐
FULL Hacer una exportación completa de la base de datos 
Hacer una exportación completa de la base de datos
• OWNER ‐ Lista de esquemas a exportar de la lista de usuarios 
indicados
• PARFILE ‐ Nombre del fichero de parámetros (en vez de 
introducir éstos vía comando) 
t oduc éstos a co a do)
• QUERY ‐ Permite definir una cláusula WHERE, que se aplicará a 
todas las tablas, y sólo las filas que la cumplan se exportarán 
y q p p

30
Carga de datos externos en Oracle

La herramienta Import/Export
• Import
– Permite cargarlos datos desde el fichero 
generado por la utilizad Export
– Estos ficheros solo pueden ser leídos con la 
utilidad Import
– Ejemplo 
imp
userid=usuario/contraseña@servicio
touser=(usuario)
fil
file=namefile
fil
Usuario donde se importan los datos 31
Carga de datos externos en Oracle
La herramienta Import/Export ‐ Parámetros
• COMMIT ‐ Se indica si se hace commit después de cada array
h
host o bien al finalizar la importación de la tabla () N
b lf l l ó d l bl ()
• FILE  ‐ Nombre del archivo desde el que se importan los datos
• FROMUSER  ‐ Lista de usuarios a importar
• TABLES ‐ Lista de tablas a importar encerradas entre 
paréntesis y separadas por comas.
é t i d
• TOUSER ‐ Usuario donde se importan los datos.
• USERID ‐
USERID Nombre, contraseña y servicio bajo los que se realiza 
N b ñ i i b j l li
la importación.

32