Bases de Datos - Carga de datos incremental

   
Vista:

Carga de datos incremental

Publicado por Aitor (1 intervención) el 17/11/2010 16:47:32
Hola a todos,

Necesito cargar los datos que tengo en una base de datos a otro. Para ello, hago la select para que me devuelva todas las líneas y luego hago un insert con las columnas que necesito. La primera vez tarda un montón de tiempo porque son mas de 17000 registros. Si se vuelve a ejecutar, solo quiero que me añada aquellas que no existen en la base de datos destino..¿Cual sería la forma más optima?

He probado a hacer algo parecido a esto:

if not exists (select * from url where url = 'a')
insert into url ...

Por desgracia, no me ha funcionado. Entiendo que si tengo que ir uno por uno mirando si los registros existen en la base de datos de destino el rendimiento no será bueno.
¿Alquien sabe como lo podría hacer?

Gracias.
Saludos,
Aitor
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
información
Otras secciones de LWP con contenido de Bases de Datos
- Cursos de Bases de Datos
- Temas de Bases de Datos
información
Cursos y Temas de Bases de Datos
- Modelo de datos
- Comparativa de bases de datos
- Principios de diseño de bases de datos

RE:Carga de datos incremental

Publicado por Franklin Gamboa (188 intervenciones) el 18/11/2010 13:59:21
Toda operación de carga va a ser lenta, la pregunta es: que tan lenta podemos hacerla... y ese es el secreto.

En lugar de hacer el if not exists.... mejor intenta cualquiera de estos dos acercamientos:

1. Select * from <tabla en la base de datos 1> where <Id tabla> not in (select <Id tabla> from <tabla en la otra base de datos>)

Esto retornará solo los registros que existan en la tabla 1 que no en la tabla 2, la seleccion puede demorar unos cuantos segundos mas, pero el proceso va a insertar solo los registros nuevos, no hará nada con los modificados eso si.

2. Select * from <tabla en la base de datos 1> distinct Select * from <tabla en la otra base de datos>

Igual al anterior pero con otra sintaxis. tampoco considera modificaciones

Ahora, si las bases de datos can a estar en linea paralelamente, por que no intentas restaurar un respaldo de la primera? o implementar replicacion?

Saludos.
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