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

Cargas Masivas + Tablas relacionadas

Estas en el tema de Cargas Masivas + Tablas relacionadas en el foro de Mysql en Foros del Web. Buenas tardes a todos. Estoy con una BBDD Mysql relacionada y tengo que realizar cargas masivas de datos a 3 tablas relacionadas entre si. El ...
  #1 (permalink)  
Antiguo 17/06/2013, 07:49
 
Fecha de Ingreso: junio-2013
Mensajes: 1
Antigüedad: 10 años, 10 meses
Puntos: 0
Cargas Masivas + Tablas relacionadas

Buenas tardes a todos.

Estoy con una BBDD Mysql relacionada y tengo que realizar cargas masivas de datos a 3 tablas relacionadas entre si.
El problema radica en que cuando hago el "LOAD DATA LOCAL INFILE..." las relaciones dan el siguiente error :

"Cannot delete or update a parent row: a foreign key constraint fails"

Mientras que, si antes de realizar la carga, deshabilito la FOREIGN_KEY_CHECKS, para cuando termine de cargar y vuelva a habilitarla, nada me asegura que lo que he insertado esté bien relacionado.

¿Habría alguna forma de comprobar la correcta relación entre todas las tablas (que cada foreign tuviera su clave en su tabla relacionada), o, por el contrario, hacer las cargas masivas (estamos hablando que costaria muuucho hacerlo con inserts normales) de alguna forma que no se vean violadas las relaciones?
  #2 (permalink)  
Antiguo 17/06/2013, 15:23
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Cargas Masivas + Tablas relacionadas

Hola puedes usar tablas de stage o tablas temporales, cargas tus datos en estas tablas(sin restricciones obviamente) una vez que tienes los datos comparas contra tus tablas productivas para ver cuales puedes insertar y cuales no :), una vez terminado esto eliminas la informacion de las tablas de stage y listo :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 18/06/2013, 06:07
 
Fecha de Ingreso: agosto-2003
Mensajes: 174
Antigüedad: 20 años, 8 meses
Puntos: 3
Respuesta: Cargas Masivas + Tablas relacionadas

No estoy de acuerdo. Las tablas temporales son prácticas para extraer una determinada colección de registros de una tabla muy grande a una tabla mas pequeña y manejable pero no para eso.

El problema de las cargas masivas cuando hay integridad referencial es que uno puedes insertar un registro en el lado muchos de una tabla si no tienes cargado previamente el lado uno porque la integridad referencial exigie que ese uno exista en una relación uno a muchos.

Lo que hay que hacer es meter primero las tablas del lado uno y luego las tablas del lado muchos. Para eso no te ayuda nada una tabla temporal.

Por tanto el script que carga datos debe tener dos pasos. El primero cargar las tablas del lado uno y el segundo si fue bien el anterior cargar las tablas del lado muchos.
  #4 (permalink)  
Antiguo 18/06/2013, 12:36
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Cargas Masivas + Tablas relacionadas

Cita:
Iniciado por Gedeon Ver Mensaje
No estoy de acuerdo. Las tablas temporales son prácticas para extraer una determinada colección de registros de una tabla muy grande a una tabla mas pequeña y manejable pero no para eso.

El problema de las cargas masivas cuando hay integridad referencial es que uno puedes insertar un registro en el lado muchos de una tabla si no tienes cargado previamente el lado uno porque la integridad referencial exigie que ese uno exista en una relación uno a muchos.

Lo que hay que hacer es meter primero las tablas del lado uno y luego las tablas del lado muchos. Para eso no te ayuda nada una tabla temporal.

Por tanto el script que carga datos debe tener dos pasos. El primero cargar las tablas del lado uno y el segundo si fue bien el anterior cargar las tablas del lado muchos.
Por eso maneje el concepto de tabla temporal o de stage, puedes tener tablas fisicas que sean para las cargas masivas(sin constraints) y una vez que haces la carga validas la informacion sobre las tablas de produccion y eliminas el contenido de las tablas de stage....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: cargas, load, masiva
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 06:17.