Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Traspaso entre Bd's diferentes (https://www.clubdelphi.com/foros/showthread.php?t=46876)

Cecilio 12-08-2007 12:54:19

Traspaso entre Bd's diferentes
 
Hola a todos.

Soy nuevo en Delphi. He conseguido sin gran complicación hacer un programa que se conecta a una BD de Interbase, y a través de un memo, envió consultas cuyos resultados visualizo en un DBgrid.

Esto sin problema. Pero la cuestión es que necesito enviar datos de una base de datos a otra. (Misma estructura y tabla diferente DB).

A ser posible sin pasar campo a campo.

Gracias.


cHackAll 12-08-2007 17:54:25

Bueno, es una tarea un poco dificil si la haces campo a campo... para ésto (por ejemplo), el SQL Server de Microsoft relaizo una utilidad para migrar entre los diferentes formatos de BDs... Al ser Interbase manejado por el BDE y no siendo de Microsoft tengo mis dudas, así que te aconsejo buscar en internet "conversores" para BDs o convertidores...

PD: internamente lo que harán es copiar campo por campo, registro por registro... no hay otr forma más efectiva.

Saludos.

Cecilio 12-08-2007 19:22:25

Gracias por tu respuesta.

Verás, no es para migrar o cambiar, sino para actualizar las existencias de dos tiendas que no "quieren" conectar en tiempo real via adsl.

Así que he pensado hacer una especie de sincronizador que ellos lanzan al final del día.

Por lo tanto comprobaria una serie de tablas; los registros nuevos estan marcados. Y se trata de pasarlos de una BD a otra via adsl.

En Paradox de corel y usando Alias lo tengo chupado, seria algo así:
Código:

Insert into :ALIASDESTINO:TABLA
SELECT * FROM :ALIASORIGEN:TABLA WHERE MARCA=1

El problema es que Paradox se conecta a interbase via ODBC y va demasiado lento.

Sql Server permite hacer consultas de diferentes DB, pero interbase no, sino estara resuelto con una consulta como la anterión.

Delfino 13-08-2007 00:22:17

Puedes usar el componente IBSql con parametros, pero por lo menos tendras q recorrer un dataset para asignar los valores a los parametros,

otro modo no hay hasta la fecha, aunque creo q habra esto en una proxima version del Firebird..

kikecg 14-08-2007 18:13:19

Que tal con archivos?
 
Hola.

En mi empresa tenemos que actualizar gran cantidad de datos a muchas oficinas remotas diariamente. Crear conexiones remotas y mantenerlas mientras se hacen las actualizaciones ralentizaba mucho todo el proceso, así que al final optamos por crear un programa "sincronizador", como tu comentas.

En nuestro caso lo que hacemos al crear las actualizaciones que se van a enviar a cada oficina es leer todas las tablas que se deben actualizar y almacenar los datos en archivos de texto con campos de ancho fijo. Este proceso es bastante rápido y, no ocupa demasiado espacio. A continuación se comprimen todos estos archivos en un .zip que se alamacena en un campo blob de la base de datos. En total el proceso no lleva mas de un par de minutos, te aseguro que es un gran cantidad de datos. Todo lo realiza un simple modulo de la aplicación principal, y por lo general solo se hace una vez al día.

En la parte de la oficina remota, se ha diseñado otra aplicación que, entre otras cosas, se encarga de descargar el archivo (previa comprobación de que no se había procesado ya, claro), lo descomprime, y lee cada archivo de datos. De esta forma la aplicación genera y ejecuta las consultas que necesite en cada oficina, que no tienen por que ser las mismas, según de que datos se trate.

Otra opción, si en cada oficina sabes que consultas se deben ejecutar en la o las otras, pues directamente en el archivo generas las consultas desde el origen. Puedes enviar el archivo por email, por ftp, en una consulta, descargandolo... en fin, de muchas maneras diferentes. Con un pequeño motor que se encargue de ejecutar cada consulta, tendrías tu actualización lista en poco tiempo.

Cada caso es diferente. Te digo que para nosotros ésta era la mejor opción, pero en otros casos puede ser mas interesante hacer una conexión remota y actualizar lo necesario.

En fin, es una idea :confused: mas.

Saludos.

RONPABLO 15-08-2007 16:11:02

Pues posiblemnte te sirva lo que se comenta en este hilo


La franja horaria es GMT +2. Ahora son las 15:18:06.

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