KBDoctor : Script para copiar datos entre bases de datos

Me ha pasado muchas veces en diferentes proyectos, que necesito copiar datos entre bases de datos que tienen estructura de tablas parecidas.

Por ejemplo, hago varias reorganizaciones en mi modelo de datos y quiero tener datos de producción para hacer pruebas, no es trivial hacerlo si se tienen diferentes estructuras.

Le agregué una opción al generador de scripts en el KBDoctor, para que genere un script que tiene sentencias de la forma


insert into <SourceDB>.<TargetSchema>.HrsCab (HrsFch,RspId,SeLiquida,CabezalPryId,EnExterior ) 
    select HrsFch,RspId,SeLiquida,CabezalPryId,EnExterior from  <TargetDB>.<TargetSchema>.HrsCab;



para todas las tablas del sistema.

Para que quede un script operativo, hay que sustituir <SourceDB> por la base de datos origen,  <SourceSchema> por el Schema origen y lo mismo pora <TargetDB> y <TargetSchema>

Entonces, para generarme una base de datos con los datos de producción, con la estructura nueva, lo que hago es hacer un "Create Database Tables" en GeneXus. Luego genero el script y copio desde la base de producción a la de desarrollo.

El script arma la lista de atributos teniendo en cuenta los atributos autonumber que esten en claves primarias, formulas redundantes, atributos inferidos, etc, de tal forma de copiar todo lo que necesita realmente.

Va a quedar disponible en la próxima versión disponible de KBDoctor para GX15.

La version actual, esta para SQL Server. Voy a hacer una version para Oracle apenas aprenda a copiar datos entre tablas cuando tienen claves autonumber.  Hay que deshabilitar triggers y copiar secuencias, y ya no es tan trivial.


Comentarios

Entradas más populares de este blog

El Sordo

StackOverflow Documentation

Paleta de colores en GeneXus