Posicionamiento de campos de fichero para SQL*Loader

nico
25 de Agosto del 2004
Hola, necesito saber si mediante SQL*Loader se pueden referenciar posiciones de campos, delimitados, dentro de un fichero de carga cuyo contenido es VARIABLE

Inma
25 de Agosto del 2004
Lo que tienes que hacer es crear el fichero de texto con separadores. Por ejemplo:

set pause off
set newpage none
set heading off
set feedback off
set verify off
set linesize 2000
set trimspool on
set trimout off
set termout off
spool c:\\\\datos.dat
select dato1 ||\\\\'|\\\\'||
dato2 ||\\\\'|\\\\'||
dato3
from tabla1;
exit;

Y te creará un fichero de este tipo:

adfkadf|34343|ASDFASDF
ad|121212|SDF
askdfdlkfjdf|34334934|ASDKFADF

Una vez creado el fichero tendrás que crear un .ctl de este tipo:

LOAD DATA
INFILE *
INTO TABLE tabla2
APPEND
FIELDS TERMINATED BY \\\\'|\\\\'
(
CAMPO1_TABLA2,
CAMPO2_TABLA2,
CAMPO3_TABLA3)


De esta forma el pipelín (\'|\') actúa como separador de campo, permitiéndote que la longitud de dichos campos sea variable.

N?or
25 de Agosto del 2004
No entiendo muy bien tu pregunta pero SQL*Loader puede referenciar campos por su posición absoluta dentro de un fichero de longitud de registro fija o por su posición relativo en un fichero de longitud de registro variable delimitado por "algo". En cualquiera de los casos Loader tiene posibilidades de programación para agregarle cierta inteligencia a la carga.
PD: si te interesa puedo enviarte una pequeña referencia que armé acerca de Loader que, al menos para la gente que trabaja aquí, resulta útil.

maverick
25 de Agosto del 2004
Puedes revisar los mauales de sql loader en www.orape.net/html/index.php, utiliza el buscador del download y encontraras lo referente a Sq Loader