Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > PostgreSQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-09-2014
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cool Como sincronizar dos Bases de Datos (SQLite y PostgreSQL)

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
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #2  
Antiguo 08-09-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Lo más simple es poner un campo a las tablas que necesites sincronizar. Ese campo puede ser booleano o 1/0. Si es 1 es que hay que pasar el registro a la otra BD. Cuando se pase lo pones a cero.
Por ejemplo.
Responder Con Cita
  #3  
Antiguo 09-09-2014
Avatar de Combat-F2D
Combat-F2D Combat-F2D is offline
Miembro
 
Registrado: may 2003
Ubicación: Toletum
Posts: 454
Poder: 21
Combat-F2D Va por buen camino
no te olvides de controlar las excepciones y posibles errores, es decir, dentro de transaciones
__________________
online
Responder Con Cita
  #4  
Antiguo 09-09-2014
Avatar de pacopenin
pacopenin pacopenin is offline
Miembro
 
Registrado: sep 2010
Ubicación: Asturias
Posts: 382
Poder: 14
pacopenin Va por buen camino
Si la sincronización es en una sola dirección opino como Casimiro. Otra cosa sería una sincronización bidireccional. Aún así, ojo con los registros borrados.
__________________
http://www.gestionportable.com
Responder Con Cita
  #5  
Antiguo 09-09-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Lo más simple es poner un campo a las tablas que necesites sincronizar. Ese campo puede ser booleano o 1/0. Si es 1 es que hay que pasar el registro a la otra BD. Cuando se pase lo pones a cero.
Por ejemplo.
Una variante a esto (la he utilizado) es utilizar un campo de TimeStamp en la Base de Datos origen y en la destino.
Eso te permite comparar los datos que ya has traspasado y evita los UPDATES en la BD origen en el momento de traspasar.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 09-09-2014
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
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
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #7  
Antiguo 09-09-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues ya depende de lo que puedas leer.
Tienes que hacer como MacGyver ¿de qué dispones?, pues ahora a sacarle provecho a lo que tienes

Los registros que puedes leer tendrán un campo id único, se supone, pues aprovéchate de ellos para crear tú unas tablas con unos campos que te indiquen si ya lo has importado o no.
Responder Con Cita
  #8  
Antiguo 09-09-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por JoAnCa Ver Mensaje
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
Pues entonces tendrás que copiar todos al sincronizar o realizar una comparación con todos los campos de cada registro para saber los que se han modificado y los que no. Esto último dependiendo de los registros totales de la tabla y de los modificados, te saldrá a cuenta o no.

Es decir, lo explico con un ejemplo.

Si la tabla son 200 registros y has modificado 100, te sale a cuenta no hacer la comparación y actualizarlos todos.
Si la tabla son 100.000 registros y has modificado 500, te sale a cuenta hacer la comparación.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #9  
Antiguo 10-09-2014
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.462
Poder: 21
newtron Va camino a la fama
Pues qué queréis que os diga pero yo veo una locura detectar en una tabla con unos cuantos miles de registros qué se ha modificado, borrado o insertado.

Igual te resultaría más "realista" poner límites a lo que quieres hacer y dedicarte por ejemplo a "importar" registros por fechas a la nueva base de datos pero claro, no sé lo que necesitas.. ¿sincronizar totalmente? ¿añadir registros nuevos? ¿también modificados? ¿anulados?..uffff....
__________________
Be water my friend.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como sincronizar datos entre bases datos cliente a servidor (asincronicamente) Efren2006 OOP 6 29-03-2013 11:36:11
Administradores de bases de datos SQLite rretamar Conexión con bases de datos 10 22-01-2011 00:00:06
Administración de bases de datos SQLITE rretamar Conexión con bases de datos 1 29-12-2009 18:00:33
Sincronizar 2 Bases de Datos Interbase Efren2006 SQL 1 09-02-2009 15:30:08
Sincronizar bases de datos SMTZ Oracle 4 30-11-2006 01:47:46


La franja horaria es GMT +2. Ahora son las 08:28:59.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi