Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Problema con importacion de datos desde un archivo de text a oracle 9i

Estas en el tema de Problema con importacion de datos desde un archivo de text a oracle 9i en el foro de Oracle en Foros del Web. Hola compañeros, verán, tengo un problema al intentar importar unos datos q se encuentran en un archivo de texto (.txt), les presento a continuacion lo ...
  #1 (permalink)  
Antiguo 12/05/2011, 08:34
 
Fecha de Ingreso: mayo-2011
Mensajes: 1
Antigüedad: 12 años, 11 meses
Puntos: 0
Pregunta Problema con importacion de datos desde un archivo de text a oracle 9i

Hola compañeros,
verán, tengo un problema al intentar importar unos datos q se encuentran en un archivo de texto (.txt), les presento a continuacion lo que tengo por el momento para la importacion:

Utilizo un archivo llamado: ctl_import_transactions.ctl, con lo siguiente:

Código:
LOAD DATA
INFILE 'C:\Migrador de Datos\Datos Descomprimidos\Datos Exportados\Transactions.txt'
BADFILE 'C:\Migrador de Datos\Datos Descomprimidos\Datos Exportados\Transactions.bad'
INTO TABLE MIGRA_TRANSACTIONS
APPEND
FIELDS TERMINATED BY ';'
TRAILING NULLCOLS
(IDCOMPANIA,DATELOCALTRANS,DATESTAMP,PRIMARYACCTNUM,DATEEXPIRED,ADQ,RESPONSECODE,RESPONSE,AUTHNUMBER,TERMINALID,SWITCHTO,COMPORT,AMOUNTTRANS,RESPONSETIME,POSENTRYMODE,NETWORKIDENTIFIER,CARDACQID,TRANSACTIONTYPE,COMISIONADQ,LOTE,ALTERNATECARDACQID,REVERSED,CONCELEC,CONCPDV,PAYSTATUS,COMPRDEPOSITO,REFNO,RRN,PRODUCTCODES,SECONDCARDACQID,ALTERNATETERMINALID,SETTLEDATE,NUMERO_ADQUIRENTE,HOSTID,FEC_ENT,IND_CAMARA,FECHA_CAMARA,TRANSACCION_NO_PAGADA,CURRENCY,PROCESSINGCODE)
En la ventana de comandos ejecuto el archivo de control con la siguiente línea:

sqlldr '[usuario]/[password]@[BD]' CONTROL='C:\Migrador de Datos\ctl_import_transactions.ctl', DATA='C:\Migrador de Datos\Datos Descomprimidos\Datos Exportados\Transactions.txt' rows=1000

* [usuario], [password] y [BD] en realidad contienen los datos que utilizo, los pongo asi a modo de ejemplo simplemente

Ahora al ejecutar la instrucción, no me lanza errores y me despliega unos mensajes como el siguiente:
Commit point reached - logical record count 24
Commit point reached - logical record count 48
Commit point reached - logical record count 72

mi duda es qué significa ese error exactamente, porque no guarda los datos en la tabla de destino.

Por cierto, olvidé agregar lo q indica el archivo ctl_import_transactions.log:
Record 1: Rejected - Error on table MIGRA_TRANSACTIONS, column IDCOMPANIA.
Field in data file exceeds maximum length
Record 3: Rejected - Error on table MIGRA_TRANSACTIONS, column IDCOMPANIA.
Field in data file exceeds maximum length
Record 4: Rejected - Error on table MIGRA_TRANSACTIONS, column IDCOMPANIA.
Field in data file exceeds maximum length

Asi unas 51 veces más despliega el mismo mensaje. Y al final indica:
ORA-01722: invalid number

Lo que me parece extraño es que en la tabla Oracle, IDCOMPANIA es un campo INTEGER y los datos son todos enteros.


Gracias por su ayuda, saludos.

Última edición por jhangjhang; 12/05/2011 a las 08:48
  #2 (permalink)  
Antiguo 12/05/2011, 15:14
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: Problema con importacion de datos desde un archivo de text a oracle 9i

Está un poco raro el asunto, por lo que posteas, debería haber datos en la tabla, es decir:

Código:
Commit point reached - logical record count xx
Esto significa que se alcanzó un número xx de filas insertadas y se debe hacer un commit (parámetro ROWS).

Código:
Record 1: Rejected - Error on table MIGRA_TRANSACTIONS, column IDCOMPANIA.
Field in data file exceeds maximum length
Esto significa que los datos que corresponden al campo idcompania en el fichero Transactions.txt, aunque sean numéricos, son demasiado largos, es como definir un campo number(2) e intentar insertar el valor "123".

Código:
Asi unas 51 veces más despliega el mismo mensaje. Y al final indica:
ORA-01722: invalid number
El parámetro ERRORS define la cantidad de errores que tolera el SQL*Loader en cada carga, que por defecto es 50, es por eso que al error 51 termina el proceso, y si al final te indica el mensaje ORA-01722: invalid number, puede ser por intentar insertar un valor alfanumérico en un campo numérico.

Lo mejor será que veas el fichero generado por el parámetro BAD que contiene los registros descartados, eso te va a dar mejor idea de que está pasando.

Por otro lado, el modo APPEND es el único que permite que se agreguen filas a una tabla que ya contiene datos (los otros modos son INSERT, REPLACE, TRUNCATE), asegúrate de poder distinguir las filas nuevas de las existentes, ya que el mensaje Commit point reached solo aparece cuando un grupo de filas se cargó con éxito.

Saludos

Etiquetas: importacion, txt
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:53.