Oracle - sql loader no mantiene orden del fichero

   
Vista:

sql loader no mantiene orden del fichero

Publicado por mar (2 intervenciones) el 20/08/2016 20:38:26
Hola,

Estoy realizando inserciones en una base de datos oracle mediante sql loader, el problema que tengo es que no me respecta el orden del fichero y es importante que mantenga el orden.

¿Hay alguna forma de forzar para que mantenga en orden de inserción?

Muchas gracias

Un Saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

sql loader no mantiene orden del fichero

Publicado por Rafael (177 intervenciones) el 23/08/2016 10:15:56
Hola:

El SQL Loader procesa secuencialmente el fichero de texto, es decir que realiza las inserciones tal cual el orden que contiene el fichero que estas cargando.

Quizás tu problema esta cuando consultas lo insertado, y esto puede ser por:

1. Tienes un INDICE que altera dicho orden y te muestra la información en dicho ORDEN.
2. El cliente con el que consultas la información, te ordena la información por defecto en el orden en que presenta las columnas (ejemplo el SQL Developer y el TOAD lo hacen)


Ahora bien hay algunas formas de solucionarlo:

1. Creas un nuevo campo al inicio al cual le asignas un valor de una secuencia, (con esto también compruebas lo que te decía del proceso secuencial).

2. Creas un INDICE que mantenga el orden que necesitas.

3. Cuando consultas estableces dicho orden.

Pero vaya lo que indicas no ocurre y las soluciones son varias pero no pasan por el SQL Loader, quizás para ayudarte mas podrías decirnos que quieres hacer con la información una vez cargada.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

sql loader no mantiene orden del fichero

Publicado por mar (2 intervenciones) el 23/08/2016 18:25:38
Hola,

La consulta la realizo por rowid, hasta donde conozco el orden de inserción debería ser acorde con el orden de inserción y eso no me ocurre.

Fichero original

Línea 100540

30514601|29|B45|EN|Falta documentación adjunta obligatoria|

Línea 102829

30514601|29|V012|EN|Verificación insuficiente o inexistente|

Pero sin embargo el rowid es

AAAg4gAAnAAFar1ACL 30514601 29 V012 EN Verificación insuficiente o inexistente
AAAg4gAAoAAFE20ACp 30514601 29 B45 EN Falta documentación adjunta obligatoria

El rowid menor es el de la línea 102829.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

sql loader no mantiene orden del fichero

Publicado por Rafael (177 intervenciones) el 24/08/2016 08:31:36
Ese es el error, el ROWID no estable el orden de inserción

Aquí te dejo el documento de Oracle correspondiente a esta pseudo columna:
https://docs.oracle.com/database/121/SQLRF/pseudocolumns008.htm#SQLRF00254

Lo dice claramente aquí:
"You should not use ROWID as the primary key of a table. If you delete and reinsert a row with the Import and Export utilities, for example, then its rowid may change. If you delete a row, then Oracle may reassign its rowid to a new row inserted later."

Es decir que este numero puede reasignarse, lo que implica que NO sigue un orden secuencial. De tal modo que tampoco es un criterio para saber si se ha insertado en el orden que tu lo metiste.

Saludos
Pd. Si la información te sirve, a mi me sirve un +1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar