SQL LOADER Por Daniel Ferrete Olarte
SQL LOADER Por Daniel Ferrete Olarte
SQL LOADER Por Daniel Ferrete Olarte
INDICE
Objetivos..1 Faq Inicial de SQL*Loader1 Ejecucin de SQL * Loader3 SQL * Loader y las fechas..8 SQL * Loader y los campos BLOB9 Cargar datos de varios archivos a una tabla...10 Cargar de 1 archivo a varias tablas.....10 Cargar archivos de Excel..........11 Volcar una tabla en un archivo....12 Volcar tabla a un archivo script con Keep Tool..13 Curiosidades...16
(Por ltimo nos dice en qu fecha se hizo la carga, cunto tiempo transcurrido tuvo y el tiempo de utilizacin de la CPU) La ejecucin empez en Sb Feb 13 18:36:02 2010 La ejecucin termin en Sb Feb 13 18:36:03 2010 5 Daniel Ferrete Olarte 2 CFGS ASI | I.E.S Gonzalo Nazareno
Contenido del fichero (loader.ctl): El archivo loader.ctl es un archivo de control en donde est contenida la informacin de cmo interpretar el archivo desde donde queremos cargar los datos.
load data infile 'c:\data\mydata.csv' into table emp fields terminated by "," optionally enclosed by '"' ( empno, empname, sal, deptno )
Desde el archivo podemos interpretar varias opciones: a. infile es para decir dnde est el archivo que contiene la informacin que queremos cargar en la base de datos. b. Into table emp (como se deduce) es para decirle en que tabla importar esos datos. c. Fields terminated by: Sirve para especificar cmo estn separados los datos unos de otros. d. Optionally enclosed by: Sirve para decir que algunos datos pueden que estn entre comillas. e. Y por ltimo el orden que estn los campos.
columnarrayrows [5000] Specifies the number of rows to allocate for direct path column arrays. control The name of the control file. This file specifies the format of the data to be loaded. data The name of the file that contains the data to load.
direct [FALSE] Specifies whether or not to use a direct path load or conventional. discard The name of the file that contains the discarded rows. Discarded rows are those that fail the WHEN clause condition when selectively loading records. discardmax [ALL] The maximum number of discards to allow. errors [50] The number of errors to allow on the load.
external_table [NOT_USED] Determines whether or not any data will be loaded using external tables. The other valid options include GENERATE_ONLY and EXECUTE. file Used only with parallel loads, this parameter specifies the file to allocate extents from. load [ALL] The number of logical records to load. log The name of the file used by SQL*Loader to log results.
skip_unusable_indexes [FALSE] Determines whether SQL*Loader skips the building of indexes that are in an unusable state. skip_index_maintenance [FALSE] Stops index maintenance for direct path loads only. streamsize [256000] Specifies the size of direct path streams in bytes. userid The Oracle username and password.
[CARGAS MASIVAS CON SQL * LOADER] 3 de febrero de 2010 evitarlo es borrar los caracteres en blanco del campo de fecha. Siguiendo el patrn:
campo_de_fecha "to_date (ltrim(rtrim(:campo_de_fecha)), 'yyyy-mm-dd hh24:mi')"
[CARGAS MASIVAS CON SQL * LOADER] 3 de febrero de 2010 1,gastos_mensuales.pdf,gastos_mensuales.pdf Despus crear el archivo de control en el cual especificar LOBFILE al campo el cual registra los datos BLOB (control.ctl): LOAD DATA INFILE datos.txt INTO TABLE tbl_ficheros FIELDS TERMINATED BY , ( fichero_id_codigo integer, fichero_ds_fichero char , fichero_bl_bfichero LOBFILE(fichero_ds_fichero) TERMINATED BY EOF) Y por ltimo lanzar la carga desde la consola de comandos: sqlldr userid=usuario/pass@bd control=control.ctl log=carga.log bad=carga.bad
10
LOAD DATA INFILE * INTO TABLE tab1 WHEN tab = 'tab1' ( tab FILLER CHAR(4), col1 INTEGER ) INTO TABLE tab2 WHEN tab = 'tab2' ( tab FILLER POSITION(1:4), col1 INTEGER ) BEGINDATA tab1|1 tab1|2 tab2|2 tab3|3
Primero debemos guardar el archivo de Excel en formato: .csv (Separado por comas). Despus cogemos y creamos un archivo loader.ctl con este contenido:
load data infile 'pruebaexcel.csv' into table tabla1 fields terminated by ';' optionally enclosed by '"' ( empno, empname, sal, deptno )
[CARGAS MASIVAS CON SQL * LOADER] 3 de febrero de 2010 select * from tabla1; spool off exit Luego solo debemos ejecutar esta sentencia en el CMD: sqlplus scott/tiger@orcl @c:\script_spool.sql Y obtendremos un archivo llamado volcadotabla1.sql que contendr lo siguiente:
Seguidamente tenemos que configurar para que se conecte con usuario de la base de datos (en este caso usaremos Scott con permiso de DBA):
13 Daniel Ferrete Olarte 2 CFGS ASI | I.E.S Gonzalo Nazareno
14
[CARGAS MASIVAS CON SQL * LOADER] 3 de febrero de 2010 Nos encontraremos con esta pantalla en la que seleccionaremos Tables y solo las tablas que queremos exportar a archivo (en este caso la tabla EMP):
Por ltimo solo debemos especificar en la parte inferior de la pantalla donde guardar el archivo de exportacin y pinchar en Generate:
15
Curiosidades:
Problemas TOAD con versin 11 Oracle: Al parecer, intentar ejecutar TOAD con una versin 11 de Oracle todava no es posible ya que de momento es incompatible.
16
17