PDA

Ver la Versión Completa : DataPump


Efrencm17
31-07-2004, 20:41:20
Como puedo copiar tablas con el DataPump en forma automática; lo que pasa es que necesito copiar diariamente tablas desde Macro Pro con DataPump y quiero saber si se puede automatizar.

Tino
01-08-2004, 03:03:02
Yo creo que no puedes automatizar el DataPump pero si que podrías crear una aplicación que hiciera lo que necesitas basandote en el compo TBatchMove. Al fin y al cabo, el DataPump está realizado en Delphi y usa este componente.

Saludos.

Efrencm17
02-08-2004, 19:21:33
Si uso el tbatchmove solo puedo copiar loas datos y no hace una copia completa de la tabla, de que otra forma puedo hacer una copia de tablas en forma automatica aunque no sea el datapump.

Tino
03-08-2004, 00:32:12
Basicamente, el Data Pump trabaja así:

Con los métodos del objeto Session: GetDatabaseNames y GetTableNames obtenemos los alias de base de datos disponibles (desde el BDE) y las tablas para un alias determinado. Además, con los métodos GetAliasParams, GetDriverNames y GetDriverParams obtenermos los parámetros del alias, la lista de controladores disponibles y los parametros de un controlador, respectivamente.

Con los métodos anteriores estamos en disposición de conectarnos a una base de datos, sabiendo que tablas contiene. Por cada tabla, sería conveniente analizar su estructura dinámicamente para poderla reconstruir en la base de datos destino. Para analizar la estructura de una tabla tenemos la propiedad FieldDefs de los TDataset. Esta propiedad es una matriz de objetos TFieldDef, cada uno de los cuales almacena la información de una columna (tipo, nombre en la tabla, not null, tamaño, ...). El FieldDefs posee un método, Add, con el que podemos definir columnas de una tabla en tiempo de ejecución.

Asimismo, se puede también analizar los índices de la base de datos origen con la propiedad IndexDefs que es una matriz de objetos IndexDef, cada uno de los cuales almacena la información de un índice (nombres de columnas que forman el índice, primaria, única, ...). IndexDefs también posee un método, Add, con el que podemos definir índices en ejecución.

Una vez definidos las columnas e índices de la tabla, llamariamos al método CreateTable del TTable.

No sería díficil crear una aplicación que leyera la estructura física de la base de datos origen, la rehiciera en la base de datos destino para con el TBatchMove pasar los datos de una base de datos a otra. Yo creo que una aplicación tipo DataPump sería de grado medio en cuanto a dificultad. Y sería capaz de mover cualquier tipo de base de datos a otra.

Hay que decir que aspectos más propios, como por ejemplo vistas, procedimientos almacenados, restricciones de integridad no serán migradas. Es el inconveniente de la generalidad de esta aplicación.

Una vez hecha, sería sencillo programar para que se ejecutara cada cierto tiempo (¿un servicio tal vez?) o simplemente ejecutarla con el programador de tareas del windows. Finalmente, si quieres controlar la aplicación por cualquier otra, puede programarla como un servidor de automatización OLE.

Tal vez ya exista una aplicación freeware como el DataPump y que además ofrezca automatización, lo desconozco.

saludos

Efrencm17
03-08-2004, 16:42:18
ok, gracias por tu atención.