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
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.
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.
Enrique, perdón por el delay desde tu post... Creo que el tema de armar sets de datos para pruebas es todo un tema en si. Existen desde cuestiones de privacidad y regulaciones que afectan a las software factories, hasta temas de costo del disco cuando nuestra base de datos mide TB en lugar de GB y necesitamos una copia por programador.
ResponderBorrarHas probado usando productos de TDM o de datos sintéticos? En caso que no lo hayas hecho te recomiendo CA TDM . En este momento estamos evaluando un producto holandés llamado DatProf que parece funcionar muy bien...
Un abrazo
Diego:
BorrarLa generacion de datos para pruebas es un tema complejo. Probe las herramienta de RedGate, pero no conozco las que vos recomendas.
Voy a evaluarlas.
Enrique