Ayuda con importación de datos

26/04/2005 - 16:44 por Guillermo | Informe spam
Tengo que importar a una base de datos SQL, los datos de un archivo ASCII.
Esto es una tarea que se hace 1 vez por semana, todos los sabados.

El caso es que la cantidad de registros es bastante grande, y necesito la
mayio performance posible.
Además, la base de destino, no está vacía, y muchos de los registros del
ascii no son nuevos sino que ya están en la base.
En estos casos, tengo que actualizar los campos del registro en lugar de
insertarlos.

Yo había pensado en programar un DTS, pero no se como hacer para que Inserte
si el registro es nuevo, o Actualice si el registro ya existe en la base.
Me sugirieron hacer una tabla temporal, donde subo el ascii completo, luego
hacer el update de los que ya existen y por último el insert de los que no
existen.
Esto lo probe, pero el problema como decía al principio, es que los
registros son muchos (alrededor de 5.000.000) y necesito la mayor rapidez
posible en el proceso.

Hay alguna otra manera para hacerlo sin crear la tabla temporal ?

Estoy hasta las manos con este tema, y no lo puedo resolver.
Alguien puede darme al menos una idea de que buscar para hacerlo.

Muchas gracias
 

Leer las respuestas

#1 Alejandro Mesa
26/04/2005 - 17:09 | Informe spam
Guillermo,

Esa es un amuy buena opcion. Puedes crear un procedimiento almacenado que
crea la tabla temporal, importe la data hacia la tabla temporal usando la
sentencia BULK INSERT, luego creando los indices necesarios para vincular la
tabla temporal con la tabla que debes actualizar. Ambas tablas deben tener un
indice por las columnas que usas para unirlas.


AMB

"Guillermo" wrote:

Tengo que importar a una base de datos SQL, los datos de un archivo ASCII.
Esto es una tarea que se hace 1 vez por semana, todos los sabados.

El caso es que la cantidad de registros es bastante grande, y necesito la
mayio performance posible.
Además, la base de destino, no está vacía, y muchos de los registros del
ascii no son nuevos sino que ya están en la base.
En estos casos, tengo que actualizar los campos del registro en lugar de
insertarlos.

Yo había pensado en programar un DTS, pero no se como hacer para que Inserte
si el registro es nuevo, o Actualice si el registro ya existe en la base.
Me sugirieron hacer una tabla temporal, donde subo el ascii completo, luego
hacer el update de los que ya existen y por último el insert de los que no
existen.
Esto lo probe, pero el problema como decía al principio, es que los
registros son muchos (alrededor de 5.000.000) y necesito la mayor rapidez
posible en el proceso.

Hay alguna otra manera para hacerlo sin crear la tabla temporal ?

Estoy hasta las manos con este tema, y no lo puedo resolver.
Alguien puede darme al menos una idea de que buscar para hacerlo.

Muchas gracias



Preguntas similares