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

[SOLUCIONADO] Actualizar información de 2 bases de datos idénticas

Estas en el tema de Actualizar información de 2 bases de datos idénticas en el foro de Mysql en Foros del Web. Hola a todos. Soy nueva en este foro así que disculpen de antemano si cometo algún error por ahí. Trataré de ser lo mas explicita ...
  #1 (permalink)  
Antiguo 12/07/2013, 10:19
 
Fecha de Ingreso: julio-2013
Ubicación: Morelia
Mensajes: 4
Antigüedad: 11 años, 4 meses
Puntos: 0
Pregunta Actualizar información de 2 bases de datos idénticas

Hola a todos. Soy nueva en este foro así que disculpen de antemano si cometo algún error por ahí. Trataré de ser lo mas explicita posible.

Mi problema es el siguiente:

Por cuestiones técnicas y externas a mi, tengo 2 bases de datos exactamente iguales en 2 oficinas diferentes para efecto de identificación tenemos Oficina1 y Oficina2. En la oficina1 es donde más se utiliza la BD que en total son 52 tablas aprox. En la oficina2 sólo se utilizan 3 tablas para captura de datos.

La situación es que necesito pasar la información que se esta capturando en la oficina2 y pasarla a la oficina1 que es donde se necesita para consultarla.

Ya intente pasarla usando una tabla temporal con los mismos campos que tienen cada una de las 3 tablas. Copiar los datos de la oficina2 para hacer el vaciado completo a oficina1. Pero el problema es que como las tablas tienen llaves primarias y otros campos que al momento de querer hacer un truncate para dejar limpia la tabla, me marca error, por que esos campos tienen foreign keys con otras tablas que no deberian de modificarse y por lo tanto no puedo vaciar los datos.

Quisiera ver si podrían recomendarme otro método. Yo estaba pensando en hacer un update, pero sinceramente no tengo idea de como deberia ser la sintaxis de la consulta.
Espero contar con su amable apoyo.
  #2 (permalink)  
Antiguo 15/07/2013, 02:47
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Actualizar información de 2 bases de datos idénticas

Lo primero que intentaria seria tener la bbdd en un servidor al cual se pueda acceder des de ambas oficinas y trabajar con una sola copia de la bbdd... Eso eliminaria todos los problemas, solo habria que tener en cuanta el tema de concurrencia de varios usuarios sobre los mismos datos.

Si forzosamente debes tener las dos copias una deberia ser replica de la otra y asi conseguirias una sincronización automatica.

http://dev.mysql.com/doc/refman/5.0/...es-groups.html
(no esta la traducción)

En todo caso deberas tener servidores que se vean entre si....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 15/07/2013, 10:07
 
Fecha de Ingreso: julio-2013
Ubicación: Morelia
Mensajes: 4
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Actualizar información de 2 bases de datos idénticas

Hola, gracias por tu respuesta.

Voy a intentar hacer la replica. Pero por el momento si necesito una sentencia o algo para pasar los datos que ya se han capturado no?
Porque si hiciera la replica desde la copia en oficina1 lo capturado en la oficina2 se perdería.
Mi idea es hacer una consulta que me lea la tabla en la bd de oficina1 y a partir del ultimo registro de la tabla, tome los datos de la bd de la oficina2 y a partir del num identificado comience su volcado...
Ayy la verdad es que ya no se que hacer, ya no se si mis ideas de solución son reales o cuerdas. Ya estoy desesperada, de favor ayudenme!
  #4 (permalink)  
Antiguo 16/07/2013, 01:01
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Actualizar información de 2 bases de datos idénticas

Primero no te podemos dar una sentencia sin la estructura de la base de datos...
Segundo el problema pueden ser los id... si en la of1 se han creado nuevos id y eln la of2 tambien que valor hay que tener en cuanta... o hay tablas que SOLO se tocan en una oficina?
Código MySQL:
Ver original
  1. INSERT INTO bbddOf1.tabla (....campos....) VALUES SELECT ....campos.... FROM bbddOf2.tabla WHERE bbddOf2.tabla.id>XXXX
Donde XXXX es el primer registro que no esta en la otra tabla.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 22/07/2013, 09:43
 
Fecha de Ingreso: julio-2013
Ubicación: Morelia
Mensajes: 4
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Actualizar información de 2 bases de datos idénticas

Hola, gracias ya pude hacer la consulta, solo que me marca un error y quería ver si mee puedes ayudar a corregirlo porque sinceramente no se que es:
Código MySQL:
Ver original
  1. insert into glosa2008.telemuni
  2. Select  (tempo.clavemun,
  3.         tempo.descripcion,
  4.         tempo.telefono,
  5.         tempo.id_telemuni)
  6.     from  temporal.telemuni as tempo,
  7.             glosa2008.telemuni as telemuni
  8.     where tempo.clavemun <> gltel.clavemun;

El error que me sale es el siguiente:
Cita:
Error Code: 1241. Operand should contain 1 column(s) 0.000 sec
Como nota adicional. la tabla telemuni en ambas bd son exactamente iguales.

Última edición por gnzsoloyo; 22/07/2013 a las 14:33 Razón: Sin etiquetar. Por favor, usar Highlight "MySQL"
  #6 (permalink)  
Antiguo 22/07/2013, 11:39
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Actualizar información de 2 bases de datos idénticas

Si clavenum es autonumerioco yo haria lo siguiente

Código MySQL:
Ver original
  1. SELECT max(clavemun) FROM glosa2008.telemuni;

una vez obtenido ese maximo

Código MySQL:
Ver original
  1. insert into glosa2008.telemuni (clavemun,
  2. descripcion,
  3. telefono,
  4. id_telemuni)
  5. Select (tempo.clavemun,
  6. tempo.descripcion,
  7. tempo.telefono,
  8. tempo.id_telemuni)
  9. from temporal.telemuni as tempo
  10. where tempo.clavemun > MAX

recuerda que no puedes leer y escribir en la misma tabla luego esto CREO QUE NO FUNCIONA

Código MySQL:
Ver original
  1. insert into glosa2008.telemuni (clavemun,
  2. descripcion,
  3. telefono,
  4. id_telemuni)
  5. Select (tempo.clavemun,
  6. tempo.descripcion,
  7. tempo.telefono,
  8. tempo.id_telemuni)
  9. from temporal.telemuni as tempo
  10. where tempo.clavemun > (SELECT max(clavemun) FROM glosa2008.telemuni)
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 23/07/2013 a las 00:33
  #7 (permalink)  
Antiguo 22/07/2013, 14:29
 
Fecha de Ingreso: julio-2013
Ubicación: Morelia
Mensajes: 4
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Actualizar información de 2 bases de datos idénticas

Hola, muchas gracias por el apoyo, después de mas de un mes de estar batallando con esto por fín quedo, aquí dejo la solución que encontré por si algún día alguien tiene el mismo problema. Saludos
Código MySQL:
Ver original
  1. use glosa2008;
  2. update glosa2008.municipi as glmuni,
  3.     temporal.municipi as temp
  4.     glmuni.clavemun = temp.clavemun,
  5.     glmuni.descripcion = temp.descripcion,
  6.     glmuni.domicilio = temp.domicilio,
  7.     glmuni.colonia = temp.colonia,
  8.     glmuni.localidad = temp.localidad,
  9.     glmuni.codpos = temp.codpos,
  10.     glmuni.mail = temp.mail
  11.     glmuni.clavemun = temp.clavemun;
  12.  
  13.  
  14. use glosa2008;
  15. insert into glosa2008.municipi
  16.         (clavemun,
  17.         descripcion,
  18.         domicilio,
  19.         colonia,
  20.         localidad,
  21.         codpos,
  22.         mail)
  23.     Select temp.clavemun,
  24.            temp.descripcion,
  25.            temp.domicilio,
  26.            temp.colonia,
  27.            temp.localidad,
  28.            temp.codpos,
  29.            temp.mail
  30.         from temporal.municipi as temp
  31.         where temp.clavemun not in (
  32.                     select glmuni.clavemun
  33.                         from glosa2008.municipi as glmuni);

Última edición por gnzsoloyo; 22/07/2013 a las 14:32 Razón: Sin etiquetar. Por favor, usar Highlight "MySQL"

Etiquetas: bases, campo, tabla
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 12:29.