Asignatura Administración de Bases de Datos Curso 2011/12 E.U. Informática – Universidad Politécnica de Madrid
Carga de datos mediante SqlLoader de Oracle Se presenta una forma de realizar el proceso de carga de datos externos en formato ASCII a una tabla de una base de datos Oracle. Para ello se utiliza como ejemplo la tabla atencion_medica y el fichero de datos atencion.txt facilitado para realizar la primera práctica. 1.
Crear la tabla en la base de datos de Oracle
Primeramente se creará la tabla mediante la sentencia SQL en la base de datos de la práctica. CREATE TABLE ABDDBA.Atencion_Medica (Cod_Paciente INTEGER NOT NULL, Cod_Medico SMALLINT NOT NULL, Cod_Consulta SMALLINT NOT NULL, Fecha VARCHAR2(11) NOT NULL, Hora CHAR(5) NOT NULL, Motivo CHAR(12) NOT NULL, Observaciones CHAR(100)); 2.
Crear el fichero de control de carga
Mediante un editor de textos crear el fichero Atencion.ctl en el que se especifica la posición de comienzo y longitud de cada uno de los atributos en el fichero ASCII. La longitud de cada columna se obtendrá abriendo el fichero de datos atencion.txt y contabilizando el número de caracteres de cada columna. Conviene anteponer el nombre del usuario desde el que se creó la tabla en Oracle, en el ejemplo, el usuario ABDDBA.
LOAD DATA APPEND INTO TABLE ABDDBA.Atencion_Medica ( Cod_Paciente POSITION(1:11) Cod_Medico POSITION(12:17) Cod_Consulta POSITION(18:23) Fecha POSITION(24:32) Hora POSITION(33:37) Motivo POSITION(38:49) Observaciones POSITION(50:149)
INTEGER EXTERNAL, INTEGER EXTERNAL, INTEGER EXTERNAL, DATE "yyyy-mm-dd", CHAR, CHAR, CHAR)
Dado que en el fichero de texto atencion.txt el campo CodPaciente viene con una longitud diferente al tamaño de los datos de tipo entero en Oracle, debe especificarse el tipo de datos en el fichero de control como Integer External. Para el caso de los campos de tipo Date, conviene especificar el formato de la fecha que tiene en el fichero de datos, y Decimal External para los datos de tipo decimal. 3.
Ejecutar el programa SqlLoader
Ejecutamos el programa SqlLoader desde la línea de comandos del sistema operativo, indicando el nombre del fichero de control, el nombre del fichero de datos y el del fichero log. sqlldr abddba/abddba control=ctl\atencion data=datos\atencion.txt log=log\atencion.log
En este ejemplo se han creado las carpetas ctl, datos y log en el directorio desde el que se ejecuta Sqlldr. De esta manera se pueden ubicar en estas carpetas los ficheros de todas las tablas de la base de datos. En el fichero atencion.log, el programa de carga de datos incluye entre otras cosas, si la carga ha tenido éxito o ha habido algún tipo de problema, el número de registros insertados en la tabla y el tiempo empleado en la carga. Este fichero se crea automáticamente. Una vez realizada la carga de datos se puede comprobar si ésta ha sido satisfactoria mediante una consulta SQL en Oracle: SELECT * FROM atencion_medica;