Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Copiar Tabla de una BD a Otra BD en Firebird (https://www.clubdelphi.com/foros/showthread.php?t=18446)

pcicom 12-02-2005 03:43:25

Copiar Tabla de una BD a Otra BD en Firebird
 
Como puedo copiar o actualizar una tabla en BD distintas, es decir
tengo la tabla en 2 BD, y quiero que cuando se actualice(inserte,actualice,elimite) algun elemento de la tabla, en las 2 BD la misma tabla sea actualizada algo asi como REPLICAR la tabla en Bases de datos distintas..

ejem:

BasedeDatos1.fdb
Conceptos
BasedeDatos2.fdb
Conceptos

Que cuando inserte o modifique en la primera BD entonces tambien se actualice la segunda...


gracias...

lucianojdg 12-02-2005 13:13:09

Una de las formas que se me ocurre es desarrollando una UDF (User Defined function), la cual es una dll que desarrollas en Delphi y luego la incluyes en tu Motor de Base de Datos Firebird. Luego, ante un evento de insert, update, etc llamas a tu función.

Una UDF es por ejemplo el Cast().


Espero te sirva


Saludos

Gydba 14-02-2005 13:42:40

Hola,

mmmm... el tema de la UDF me parece un tanto "verde" para mi comprensión, aunque no descarto nunca nada.

Lo que yo no entiendo de la cuestión inicial es: si las 2 BDs contemplan lo mismo en cuanto a datos, por qué simplemente no se copian los archivos FDB y listo si de todas formas ambas bases son iguales? La respuesta más posible a eso es que ambas bases están conectadas y obviamente para cambiar el archivo hay que desconectar al menos a una.

Firebird por el momento no contempla el uso de bases separadas (me encantaría que alguien de los creadores de FB lo tenga en cuenta porque realmente es útil y solventaría varios cientos de líneas en código, pero bueh), por lo tanto lo más simple sería tener dos conexiones abiertas por aplicación y que las operaciones se realicen sobre ambas bases. Personalmente no lo haría por cuestiones de diseño, pero cada cual aplica las ideas a sus propios casos.

Otra solución válida sería tener fechas de modificación por registro y realizar comparaciones con tablas centrales (Sucursales, configuración, etc.) y de esa manera solo exportar los datos actualizados, como una pseudo-replicación. Es un poco trabajoso y requiere cambios en la estructura de las bases pero resulta bastante efectivo.

Lo cierto es que hay varias formas de hacer lo que pedís, pero no todas pueden aplicarse a todo y cada metodología tiene sus limitaciones.

Siento no poder ser de más ayuda.

Saludos!

pcicom 14-02-2005 16:31:15

Copiar Tabla de una BD a Otra BD en Firebird
 
Gracias Luciano y Gydba, por contestar, me interesaria saber como se podria integrar la DLL que mencionas a FIREBIRD, y una de la intenciones e usar FIREBIRD en Linux asi que no se si sea el mismo metodo que las DLL de Windows...

Por ahora para Solucionar esto tengo una pequeña Aplicacion en Delphi en Windows y otra en FreePascal en Linux usando un componente de acceso gratuito llamado fblib que hasta n lo que he provado funciona perfectamente.

En cuanto a lo que menciona Gudba, las BD son distintas, el detalle es que estas tablas que quiero replicar o mantenet iguales en estas BD es por la situacion de las relaciones para la elavoracion de reportes usando sin complicaciones simples comandos SQL con Unions & INNER, ya que de esta manera es facil obtener la informacion que necesito...

El detalle de las BD es el siguiente

BD_Comun................... Tablas de Uso General
BD_Empresa1............... Tablas de Movimientos & Copia Tablas Generales
BD_Empresa2
....
...
...
BD_Empresa"n"


La franja horaria es GMT +2. Ahora son las 11:54:07.

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