Tablas externas en Oracle 10g

Antes que todo el concepto: las tablas externas las usamos para cargar informacion masiva en la base de datos. Pros? son rapidas y una alternativa al sqlldr (SQL Loader). Contras? no permiten insertar, modificar, crear indices. Por lo tanto yo les recomiendo usar sqlldr (al momento de escribir este post no habia usado sqlldr y le tenia miedo jaja, pero ya lo use y les confieso que es mas facil que esto, tratare de hacer un post mas adelante sobre el sqlldr).

Primero debemos cargar el sqlplus, y entrar como usuario con Rol de DBA.

SQL*Plus: Release 10.2.0.1.0 – Production on Wed Oct 18 22:21:20 2006
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Enter user-name: sys as sysdba
Enter password:
Connected to an idle instance.
Crearemos el directorio donde se encuentran los datos
SQL>CREATE DIRECTOY ext_tab_dir AS ‘/home/oracle/sbd1/proyecto01’;

si estamos usando windows evitemos colocar rutas con espacios o nombres largos, podria quedar algo asi:

SQL>CREATE DIRECTOY ext_tab_dir AS ‘c:\proyecto01’;

Ahora otorgamos permisos de Lectura y Escritura para dicho directorio. Aquí PROY01 es el usuario que va a trabajar con los datos.
SQL>GRANT READ ON DIRECTORY ext_tab_dir TO PROY01;
SQL>GRANT WRITE ON DIRECTORY ext_tab_dir TO PROY01;

SQL>quit (para salir)

Para crear la tabla entramos como (en este caso) el usuario PROY01 al SQL*Plus.

SQL*Plus: Release 10.2.0.1.0 – Production on Wed Oct 18 22:21:20 2006
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Enter user-name: proy01
Enter password: *****
Connected to an idle instance.
SQL>

CREATE TABLE tabla_datos (
region char(21),
departamento char(16),
hospital char(36),
especialidad char(41),
unidad char(11),
servicio char(13),
sala char(5),
cama char(5),
paciente char(22),
carnet_paciente int,
cedula_p char(9),
fecha_nac date,
fecha_defu date,
sexo char(1),
dir_pac char(8),
estado_civ char(11),
responsable_paciente char(22),
colegiado int,
medico char(41),
sintoma char(51),
fecha_revi date,
observaciones char(27)
)ORGANIZATION EXTERNAL
( TYPE ORACLE_LOADER
DEFAULT DIRECTORY ext_tab_dir
ACCESS PARAMETERS
( RECORDS DELIMITED BY NEWLINE
CHARACTERSET ‘WE8ISO8859P15’
SKIP 3
FIELDS LRTRIM (
region (1:21) char(21),
departamento (22:37) char(16),
hospital (38:73) char(36),
especialidad (74:114) char(41),
unidad (115:125) char(11),
servicio (126:138 ) char(13),
sala (139:143) char(5),
cama (144:148 ) char(5),
paciente (149:170) char(22),
carnet_paciente (171:186),
cedula_p (187:195) char(9),
fecha_nac (196:206) char(10) date_format DATE mask “dd/mm/yyyy”,
fecha_defu (207:217) char(10) date_format DATE mask “dd/mm/yyyy”,
sexo (218:219) char(1),
dir_pac (220:227) char(8 ),
estado_civ (228:238 ) char(11),
responsable_paciente (239:260) char(22),
colegiado (261:270),
medico (271:311) char(41),
sintoma (312:362) char(51),
fecha_revi (363:373) char(10) date_format DATE mask “dd/mm/yyyy”,
observaciones (374:400) char(27)
)
)
LOCATION ( ‘datos.txt’ )
);
Por ultimo probamos:
SQL> select * from tabla_datos;
y nos tiene que mostrar los datos que están en el archivo de datos asociado a la tabla creada.
SQL>quit

No explique que significan los valores dentro de los parentesis, como este:

colegiado (261:270)

alli dice que el campo colegiado obtendra su valor de la columna 261 a la 270 del archivo de entrada.

****GRACIAS A NATARENO POR LA INFO🙂

2 comentarios el “Tablas externas en Oracle 10g

  1. erikgiron dice:

    Ahh mierda de producto, he estado soñando con ese proyecto, que iba a estar mas facil sera la gran puta…

  2. carnitos dice:

    sin paja vos, ahorita estoy despierto porque un cagado select lleva 4 horas y aun no termina.

    select * from detalle;

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