Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Oracle Spatial de la A a la Z - Unidad 6
1. 6
Cargando
información
espacial
OBJETIVOS
•Identificar los métodos para la carga de datos espaciales
•Crear los archivos de control asociados con la carga de los datos espaciales mediante SQL
* Loader
•Utilizar la herramienta de conversión para cargar un Shapefile Environmental Systems
Research Institute (ESRI) shapefile en Oracle formato espacial
Existen varios métodos para cargar datos en las tablas de una base de datos Oracle.
SQL*Loader
SQL*Loader carga datos procedentes de archivos externos en las tablas de una base de
datos Oracle. Tiene un potente sistema de análisis que prácticamente no limita el formato
de los datos del archivo de datos.
Carga Directa
Las inserciones de Carga Directa se pueden utilizar para copiar datos de una tabla a otra
dentro de la misma base de datos. Esto acelera la operación de inserción al ignorar la
caché de buffers de base de datos y escribir los datos directamente en los archivos de
datos.
1 MÉTODOS DE CARGA DE DATOS
2. 2 SQL*LOADER
SQL*Loader carga datos procedentes de archivos externos en las tablas de una base de
datos Oracle. SQL*Loader tiene las siguientes características:
• SQL*Loader puede utilizar uno o más archivos de entrada.
• Se pueden combinar varios registros de entrada en un único registro lógico para la
carga.
• Los campos de entrada pueden ser de longitud fija o variable.
• Los datos de entrada pueden tener cualquier formato: carácter, binario, decimal
empaquetado, de fecha y decimal no empaquetado.
• Los datos se pueden cargar desde distintos soportes físicos como, por
ejemplo, discos, cintas o canales denominados.
• Los datos se pueden cargar en varias tablas a la vez.
• Existen opciones para realizar sustituciones o agregaciones en los datos existentes de
las tablas.
3 ARCHIVOS UTILIZADOS POR SQL*LOADER
•Se pueden aplicar funciones SQL a los datos de entrada antes de almacenar la fila en la
base de datos.
•Se pueden generar automáticamente valores de columna basándose en ciertas reglas.
•Por ejemplo, se puede generar un valor clave secuencial y almacenarlo en una olumna.
•Los datos se pueden cargar directamente en la tabla ignorando la caché de buffers de la
base de datos.
3. SQL*Loader utiliza los siguientes archivos:
• Archivo de control del cargador: Especifica el formato de
entrada, las tablas de salida y las condiciones opcionales
que se pueden utilizar para cargar sólo parte de los registros
que se encuentran en los archivos de datos de entrada
• Archivos de datos de entrada: Contienen los datos en el
formato definido en el archivo de control
• Archivo de parámetros: Es un archivo opcional que se
puede utilizar para definir los parámetros de línea de
comandos para la carga
• Archivo log: Lo crea SQL*Loader y contiene un registro de
la carga
• Archivo de errores: Sirve para que la utilidad escriba los
registros que se rechazan durante la carga. (Esto se puede
producir durante la validación de los registros de entrada que
realiza la utilidad o durante la inserción de registros que
realiza Oracle
Server.)
• Archivo de desechos: Es un archivo que se puede crear,
si es necesario, para almacenar todos los registros que no
cumplen los criterios de selección
4 USO DE SQL*LOADER
4. Línea de comandos
Al llamar a SQL*Loader, se pueden especificar parámetros que establezcan las
características de la sesión. Los parámetros se pueden introducir en cualquier orden y
se pueden separar por comas. Puede especificar valores para los parámetros o, en
algunos casos, puede aceptar los valores por defecto sin introducir ningún valor.
Si llama a SQL*Loader sin especificar ningún parámetro, SQL*Loader mostrará una
pantalla de ayuda que enumera los parámetros disponibles y sus valores por defecto.
5 ARCHIVO DE CONTROL DE SQL*LOADER
El archivo de control de SQL*Loader es un archivo de texto que contiene instrucciones
DDL (Lenguaje de Definición de Datos). Las instrucciones DDL se utilizan para
controlar los siguientes aspectos de una sesión SQL*Loader:
• Dónde encuentra SQL*Loader los datos de carga
• Cómo espera SQL*Loader que se formateen los datos
• Cómo se configura SQL*Loader (gestión de memoria, rechazo de registros, gestión de
carga interrumpida, etc.) al cargar los datos
• Cómo manipula SQL*Loader los datos que se cargan
Aunque no están definidas con precisión, se puede decir que un archivo de control del
cargador tiene tres secciones:
• La primera sección contiene información de toda la sesión, por ejemplo:
- Opciones globales como, por ejemplo, tamaño de enlace, filas, registros que se
ignoran, etc.
- Cláusulas INFILE para especificar dónde se encuentran los datos de entrada
-Cómo se cargan los datos
• La segunda sección consta de uno o más bloques INTO TABLE. Cada uno de estos
bloques contiene información acerca de la tabla en la que se cargan los datos, como,
por ejemplo, el nombre de la tabla y las columnas de la tabla.
• La tercera sección es opcional y, si existe, contiene datos de entrada.
En el siguiente ejemplo se muestra un archivo de control de SQL*Loader típico.
5. 1 -- Esto es un archivo de control de ejemplo
2 LOAD DATA
3 INFILE ’SAMPLE.DAT’
4 BADFILE ’sample.bad’
5 DISCARDFILE ’sample.dsc’
6 APPEND
7 INTO TABLE emp
8 WHEN (57) = ’.’
9 TRAILING NULLCOLS
10 (hiredate SYSDATE,
deptno POSITION(1:2) INTEGER EXTERNAL(3)
NULLIF deptno=BLANKS,
job POSITION(7:14) CHAR TERMINATED BY WHITESPACE
NULLIF job=BLANKS "UPPER(:job)",
mgr POSITION(28:31) INTEGER EXTERNAL
TERMINATED BY WHITESPACE, NULLIF mgr=BLANKS,
ename POSITION(34:41) CHAR
TERMINATED BY WHITESPACE "UPPER(:ename)",
empno POSITION(45) INTEGER EXTERNAL
TERMINATED BY WHITESPACE,
sal POSITION(51) CHAR TERMINATED BY WHITESPACE
"TO_NUMBER(:sal,’$99,999.99’)",
comm INTEGER EXTERNAL ENCLOSED BY ’(’ AND ’%’
":comm * 100“)
Explicación del archivo de control de ejemplo
1. Así es cómo se introducen comentarios en un archivo de control. Los comentarios
pueden aparecer en cualquier parte de la sección de comandos del archivo, aunque no
deben aparecer dentro de los datos.
2. La sentencia LOAD DATA le dice a SQL*Loader que es el inicio de una nueva carga
de datos. Si tuviera que continuar realizando una carga que se hubiese interrumpido
mientras estaba en curso, tendría que utilizar la sentencia CONTINUE LOAD DATA.
3. La palabra clave INFILE especifica el nombre de un archivo de datos que contiene los
datos que desea cargar.
4. La palabra clave BADFILE especifica el nombre de un archivo en el que se colocan
los registros rechazados.
5. La palabra clave DISCARDFILE especifica el nombre de un archivo en el que se
colocan los registros desechados.
6. La palabra clave APPEND es una de las opciones que puede utilizar al cargar datos
en una tabla que no está vacía. Para cargar datos en una tabla que está vacía, utilice la
palabra clave INSERT.
7. La palabra clave INTO TABLE permite identificar tablas, campos y tipos de dato.
Define la relación entre los registros del archivo de datos y las tablas de la base de
datos.
6. 8. La cláusula WHEN especifica una o más condiciones de campo que debe cumplir
cada
registro para que SQL*Loader cargue los datos. En este ejemplo, SQL*Loader sólo
cargará el registro si el carácter número 57 es una coma decimal. Esta coma decimal
delimita los dólares y los céntimos en el campo y produce el rechazo de los registros si
SAL no tiene ningún valor.
9. La cláusula TRAILING NULLCOLS le dice a SQL*Loader que trate las columnas de
posición relativa que no están presentes en el registro como columnas nulas.
10. El resto del archivo de control contiene la lista de campos, que proporciona
información acerca de los formatos de columna de la tabla que se está cargando.
Consideraciones de la Sintaxis del Archivo de Control
• La sintaxis tiene formato libre. (Las sentencias pueden ocupar varias líneas.)
• No es sensible a mayúsculas/minúsculas, aunque las cadenas entre comillas simples
o dobles se toman de forma literal, incluidas mayúsculas y minúsculas.
• En la sintaxis del archivo de control, los comentarios abarcan desde los dos guiones (-
) que marcan el inicio del comentario hasta el final de la línea. La tercera sección
opcional del archivo de control se interpreta como datos en lugar de como sintaxis del
archivo de control; por lo tanto, no se permite el uso de comentarios en esta sección.
• La palabra clave CONSTANT tiene un significado especial en SQL*Loader y, por
tanto, está reservada. Para evitar posibles conflictos, no utilice la palabra CONSTANT
como nombre de tabla o columna.
6 MÉTODOS DE CARGA
SQL*Loader incluye dos métodos para cargar datos:
• Ruta de acceso convencional
• Ruta de acceso directa
Carga por rutas de acceso convencionales
La carga por rutas de acceso convencionales construye una matriz de filas que se
van a insertar y utiliza la sentencia SQL INSERT para cargar los datos. Durante las
cargas por rutas de acceso convencionales, se analizan los registros de entrada
basándose en especificaciones de campo y se crea una matriz de registros que se
inserta en la tabla especificada del archivo de control. Los registros que no cumplen
las especificaciones de campo se rechazan y aquellos registros que no satisfacen los
criterios de selección se desechan.
Las cargas por rutas de acceso convencionales se pueden utilizar para cargar datos
tanto en tablas agrupadas como no agrupadas. La generación de redo se controla
mediante el atributo de registro para la tabla que se está cargando.
7. Carga por rutas de acceso directas
La carga por rutas de acceso directas crea bloques de datos en memoria y los guarda
directamente en las extensiones asignadas para la tabla que se está cargando.
No se generan entradas de redo log online a menos que la base de datos esté en modo
ARCHIVELOG. Las cargas por rutas de acceso directas utilizan las especificaciones de
campo para crear bloques de datos Oracle completos y escribir los bloques directamente
en archivos de datos Oracle. La carga por rutas de acceso directas ignora la caché de
buffers de base de datos y sólo accede a la SGA para gestionar las extensiones y ajustar el
límite superior.
La carga por rutas de acceso directas suele ser más rápida que la carga de ruta de acceso
convencional, pero no se puede utilizar en todas las situaciones. La siguiente sección
compara la carga por rutas de acceso convencionales con la carga por rutas de acceso
directas y proporciona ejemplos en los que se puede utilizar cada una de ellas.
Nota: El archivo de comandos catldr.sql, incluido en Oracle, crea vistas que utiliza la
carga por rutas de acceso directas. Se llama automáticamente cuando se ejecuta el
archivo de comandos catalog.sql.