SQL*LOADER (paso a paso)

sqlloader
Para comenzar hay que ser un poco ordenados, y para ello recomiendo crear un directorio llamado “CARGAS” dentro de la unidad C:\> de Windows

dentro de aquella carpeta tendremos los siguientes subdirectorios: LOG_FILES, DISCARD_FILES y BAD_FILES

quedandonos un arbol de la siguiente manera:

+ C:\
|_____+ CARGAS
|      |_______+ LOG_FILES
|      |_______+ DISCARD_FILES
|      |_______+ BAD_FILES

Luego de ello nos dirigimos al SQLPLUS desde Inicio/todos los programas/Base de Datos Oracle 10g Express Edition/Ejecutar Línea de Comandos SQL

ahora debemos crear un usuario y con él crear una tabla para cargar los datos, para ello haremos lo siguiente:

1.- primero que todo nos vamos a SQL*PLUS e iniciamos sesion como sysdba

SQL> conn / as sysdba
Conectado.

2.- luego creamos un usuario

SQL> create user user1 identified by pass1;
Usuario creado.

3.- asignamos una cuota al usuario (por ser solo un ejemplo tabajaremos con el tablespace system)

SQL> alter user user2 quota 10m on system;
Usuario modificado.

4.- damos privilegios de conexion y creacion de tablas al usuario

SQL> grant create table, connect to user2;
Concesi¾n terminada correctamente.

5.- y finalmente nos conectamos en nuestro usuario creado

SQL> conn user2/pass2
Conectado.

6.- creamos nuestra tabla de ejemplo

SQL> create table tabla_destino(
2  nombre varchar(20),
3  edad integer,
4  salario integer);

Tabla creada.

Bueno ahora que tenemos la base lista, debemos crear un archivo de control y un archivo de datos.
-El archivo de control es el que se dedicara a ver como estan organizados los datos para poder cargarlos en la BD y en nuestro caso lo guardaremos con el nombre control.ctl.
-En cuanto al archivo de datos este contiene los datos que serán cargados en la BD y lo guardaremos con el nombre datos.dat.

####################
##    Archivo de Datos      ##
####################

Arturo Tocarruncho  40   500000
Luis Perez          30  1000000
Sandra Gil          20    90000

————————————————————————————————————

NOTA: Estos datos estan organizados de la siguiente manera, los 20 primeros caracteres corresponden al nombre, desde el caracter 21 al 23 corresponderá a la edad y desde el caracter 24 al 31 corresponderá al salario.

————————————————————————————————————

####################
##    Archivo de Control   ##
####################

LOAD DATA
INFILE ‘datos.dat’
INTO TABLE tabla_destino
(NOMBRE         POSITION(01:20)      CHAR(20),
EDAD           POSITION(21:23)      INTEGER EXTERNAL,
SALARIO        POSITION(24:31)      INTEGER EXTERNAL)

————————————————————————————————————

NOTA: Explicar como funciona un archivo de control esta fuera de este tutorial, pero ya que este archivo de control funciona sobre tablas vacias solamente, para hacerlo funcionar sobre tablas con valores existentes se le debe añadir antes del INTO TABLE tabla_destino, la clausula APPEND.

————————————————————————————————————

ahora que tenemos los dos archivos los ubicamos dentro de la carpeta CARGAS, quedandonos de la siguiente manera:

+ C:\
|__+ CARGAS
|      |_______+ LOG_FILES
|      |_______+ DISCARD_FILES
|      |_______+ BAD_FILES
|      |_______+ control.ctl
|      |_______+ datos.dat

ahora que tenemos ubicados los archivos, abrimos una consola desde ejecutar (tecla super+r), escribimos “cmd” y damos click en aceptar.

luego que nos aparecio la consola, escribimos lo siguiente:

>cd C:\cargas

C:\cargas>

ahora que estamos ubicados dentro del directorio, escribimos el comando que cargará los datos:

C:\cargas>sqlldr userid=user1/pass1 control=control.ctl data=datos.dat log=log_files/control.log

Parámetros Comunes

* userid=USUARIO/CONTRASEÑA@BASE Usuario, contraseña e instancia a la que te conectas.

* control Ruta del archivo de control que contiene las directivas de lo que se va a hacer.

* data Ruta del archivo que contiene los datos.

* log Ruta del archivo donde quieres que se genere el log.

* discard Ruta del archivo donde quieres que te envíe los registros descartados y no cargados.

* bad Ruta del fichero donde van a parar los registros malos.

y listo, ya estarían cargado los datos dentro de nuestra tabla, para corroborar simplemente hacemos un select a la tabla que insertamos los datos, espero que les ayude por lo menos para hacer alguna tarea o disertación.

Comments

  1. James says:

    Excelente aporte acerca de SQL LOADER, muy buena guia…!!!

  2. Gracias ;D

  3. YAMILEX says:

    excelente ayuda!!!
    sobre todo el consejo de ser ordenado 🙂

  4. El archivo de control de este ejemplo solo funciona sobre tablas vacias, si quieres aplicar la carga de los datos sobre una tabla ya poblada debes usar el comando APPEND en el archivo de control, cosa que no he probado

    respecto a lo de ordenado en mi no va, pero es una buena sugerencia ajjajajaja

    saludos

  5. Muchas gracias¡¡
    Es un aporte que te deja una buena base. Lo que sigue es solo indagar los detalles

  6. Que bueno que te haya servido

    se agradecen los comentarios, es lo unico que motiva para seguir escribiendo.
    saludos

  7. Carlos Andrés says:

    Muchas gracias, excelente guía, he logrado cargar la información que requiero. Estaré atento a nuevos aportes.

  8. David Vázquez Montejano says:

    oye me ha servido mucho esta guia para un trabajo sobre administracion de bases de datos. Asi podra exponer como funciona el sql loader… yo pense q habia q instalar algun programa aparte del oracle, gracias por al guia. Ya se q hace casi un año o mas q la has hecho pero la acabo de ver y he kerido comentar 😉

    Saludos

  9. Cristian says:

    Buenos dias,

    sabeis por que me da el siguiente error?: ‘Message 2100 not found; No message file product=RDBMS, facility=ULMessage 2100 not found; No message file for product=RDBMS, facility=UL’

    Mis datos de las variables:
    ORACLE_HOME=C:\oracle\instantclient10_1
    Path= C:\oracle\instantclient10_1;C:\oracle\product\10.2.0\client_1\bin;D:\oraclexe\app\oracle\product\10.2.0\server\bin;C:\oracle\instantclient10_1\bin;C:\oracle\product\10.2.0\client_1\BIN;D:\oraclexe\app\oracle\product\10.2.0\server\BIN;

    Gracias de antemano y saludos.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: