Laburo España: 250.000 ofertas de empleo

Sputnik

Uso básico de SQL*Loader

Miércoles, 25 de mayo de 2005

SQL*Loader es un programa de Oracle que se usa para migrar datos de ficheros a la base de datos Oracle. Es una herramienta muy potente (admite migracion de diferentes tablas, varios tipos de ficheros de importacion, carga selectiva...) aunque explicaré simplemente su uso más básico.

Para usar esta herramienta tan solo tendriamos que escribir:

sqlldr (o sqlload) tanke/tanke control=loader.ctl

Si estais familiarizados con la sintaxis de conexion de Oracle, sabreis que tanke/tanke no es mas que los parametros de conexion a la base de datos (ususario/contraseña@db).

El parametro que vá después, es el fichero de control donde cargaremos los datos externos....

Suponiendo que tenemos un archivo CSV (archivo de valores separados por comas) y tenemos una tabla de 4 columnas llamada empleados, tendriamos que hacer lo siguiente:

Columnas Tabla empleados:

id, nombre, apellidos, dni

Fichero CSV:

1,'Lucas', 'Garcia', 36177239
2,'Lucas', 'Garcia', 36177239
3,'Julio', 'Garcia', 36177239
4,'Pablo', 'Garcia', 36177239
....


Fichero loader.ctl que cargará el SQL*Loader:

load data
infile 'c:\datos.csv'
into table empleados
fields terminated by "," optionally enclosed by '"'
(id, nombre, apellidos, dni)


Y esto seria el uso más básico de SQL*Loader.. pero tiene muchos usos mucho más interesantes... a jugar con el :-)


Comentarios

como import y export en este programa

rosa garcia | 02-02-2006 21:09:31

Si alguien me puede ayudar soy casi algo novata y necesito algo mas avanzado con la estructura del archivo ctl, tengo una situación:
Tengo que subir varios archivos .txt a una tabla de Oracle, ya hice un script que me lee los txt uno a uno , los renombra a un solo nombre ej.data.txt y por instrucción sqlldr user/password@bd control=nombrearh.ctl los subo satisfactoriament, bien pero ahora me solicitan que dentro de la data que sube al oracle quieren ver el nombre original del archivo , en el script que me hace la lectura de los archivos donde los renombro yo guardo dicho nombre en una variable ej. k=cajero1.txt , bien este nombre como en el ctl el NOMBRE ES FIJO INFILE=data.txt (nombre de arch renombrado) , no tengo el nombre original dentro del ctl y deseo saber como puedo pasar el CONTENIDO DEL LA VARIABLE K =Cajeros1.txt (nombre del archivo) a un campo de la tabla. Investigando encontre una manera de insertar data que no viene exactamente del archivo txt pero no de la manera como quiero agregarla ej. VALOR POSITION(1:5) (:VALOR/100) PERO NO POR EJ.DECIRLE QUE PASE UN VALOR QUE VIENE DEL PRIMER SCRIPT AL CTL ME GUSTARIA QUE FUERA ASI: NOMBRE_ARCH (:K) VALOR DE K
USO : ORACLE 10G EN HP-UX VER11.23

KENIA ESPINOZA | 12-07-2006 17:54:58

Hola tengo una dudilla, al ejecutar el comando sqlldr debo especificar en que directorio se encuentra archivo de control?

o debo guardar ese archivo en un directorio especifico?

espero me puedas ayudar, excelente blog ;D

bastian gutierrez | 04-05-2009 20:32:03

Comentar


Recordar datos

Miniblog

Favoritos

Tira e.c.o.l.*

Tira e.c.o.l.*

sputnik 2004-2005
Algunos derechos reservados.


Suscribir este blog en Bloglines

Blogarama

No a las patentes de software

LaInformacion.com lainformacion.com - Medio Oficial de los Premios Bitacoras 2009