Hola a Todos
Tengo una aplicación que usa SQLite y necesito obtener los datos de otra aplicación que usa PostgreSQL, para la primera vez esta bien importar todos los datos de una para la otra, pero después solo necesito los datos nuevos, es decir soncronizar las 2 bases de datos
Los datos de las tablas que necesito, no siempre se modifican por eso necesito saber primero si se modificó alguna tabla o no, para en caso positivo obtener solo los datos nuevos o modificados de la BD Origen
Uso componentes los ZEOS para conectarme a ambos (SQLite y PostgreSQL) y Delphi7
Como sincronizar dos Bases de Datos (SQLite y PostgreSQL)
Started by
JoAnCa
, Sep 08 2014 12:01 PM
6 replies to this topic
#1
Posted 08 September 2014 - 12:01 PM
#2
Posted 09 September 2014 - 05:53 AM
Saludos.
Una idea de como puedes obtener esos registros es crear Triggers sobre la tabla en cuestión, tanto para la modificación como la inserción, que te inserten en otra tabla de "Logs" los registros cambiados/nuevos y desde aquí puedas sincronizar.
Una idea de como puedes obtener esos registros es crear Triggers sobre la tabla en cuestión, tanto para la modificación como la inserción, que te inserten en otra tabla de "Logs" los registros cambiados/nuevos y desde aquí puedas sincronizar.
#3
Posted 09 September 2014 - 06:09 AM
Hola
Yo estoy trabajando (empezando) con los Notify/Listen de postgres, como lo dice Rolphy Reyes, se crean unos triggers, pero estos envían un un mensaje via tcp/ip con cierta información a un servidor que está escuchando estos mensajes, este servidor puede realizarse en Delphi, así apenas ocurre alguna modificación, el servidor se entera y realiza la actualización inmediatamente.
Esta es la forma de disparar aplicaciones externas desde Postgres sin necesidad de estar disparando sql cada determinado tiempo para ver si hay una actualización de la base de datos. Los componentes UniDac de Delphi tienen la posibilidad de registrar un cliente ante postgres y recibir los mensajes Notify, hay otras alternativas con este mismo método.
Espero te sirva la información.
Saludos.
Yo estoy trabajando (empezando) con los Notify/Listen de postgres, como lo dice Rolphy Reyes, se crean unos triggers, pero estos envían un un mensaje via tcp/ip con cierta información a un servidor que está escuchando estos mensajes, este servidor puede realizarse en Delphi, así apenas ocurre alguna modificación, el servidor se entera y realiza la actualización inmediatamente.
Esta es la forma de disparar aplicaciones externas desde Postgres sin necesidad de estar disparando sql cada determinado tiempo para ver si hay una actualización de la base de datos. Los componentes UniDac de Delphi tienen la posibilidad de registrar un cliente ante postgres y recibir los mensajes Notify, hay otras alternativas con este mismo método.
Espero te sirva la información.
Saludos.
#4
Posted 09 September 2014 - 12:44 PM
El problema es que no tengo control de la BD Origen (Postgres), pues es un soft de terceros, y en mi empresa quieren hacer un modulo que usa los datos de varias tablas de ese sistema, por eso en el sistema origen no puedo tocar nada, solo leer los registros que me interesan, y verificar si son iguales o no a los de mi BD (SQLite) para importar los nuevos o modificados
#5
Posted 09 September 2014 - 07:16 PM
Amigo mío, allí si no tengo muchas alternativas, al menos que yo haya conocido, lo único que te puedo decir es que insertar es más rápido que modificar, así que busca una opción ya sea por rango de fechas y realiza movimientos completos de registros. espero alguien tenga alguna estrategia mejor.
Saludos.
Saludos.
#6
Posted 12 September 2014 - 07:44 AM
Pues le detallo mejor el problema
En la BD origen necesito las tablas de trabajadores y vehiculos, generalmente son los mismos, pocas veces cambian
Pero puede darse el caso de una alta o baja de algun trabajador, en ese caso seria agregar el nuevo
En el caso de los vehículos, sucede lo mismo, pero además de adicionar, puede darse el caso de que un vehículo cambie la matrícula o el color, en ese caso seria actualizar el dato que cambió
En la BD origen necesito las tablas de trabajadores y vehiculos, generalmente son los mismos, pocas veces cambian
Pero puede darse el caso de una alta o baja de algun trabajador, en ese caso seria agregar el nuevo
En el caso de los vehículos, sucede lo mismo, pero además de adicionar, puede darse el caso de que un vehículo cambie la matrícula o el color, en ese caso seria actualizar el dato que cambió
#7
Posted 13 September 2014 - 12:41 PM
Mira que yo he tenido que trabajar bajo la misma situación muchas veces, y lo que hago es un append y update, o si puedo dejar la tabla de mi base de datos sin llaves foráneas, prefiero eliminar todo lo que se pueda e insertar nuevamente. (Solo cuando son tablas maestras).
En las tablas de movimiento o transaccionales si hay que buscar un filtro más detallado, dado el volumen de datos que puede representar.
Saludos.
En las tablas de movimiento o transaccionales si hay que buscar un filtro más detallado, dado el volumen de datos que puede representar.
Saludos.