Download DesBitTransferData1.0
Transcript
Bit Sistemas Proyecto: BitTransferData Actividad: Doc. Técnica Versión: 1.0 Autor: Pablo Villa / Rol: Gerencia de Desarrollo 09/08/17 Transferencia de datos Exportación y Eliminación de datos Archivo: D:\81948273.doc Página 1 de 8 Bit Sistemas Proyecto: BitTransferData Actividad: Doc. Técnica Versión: 1.0 Autor: Pablo Villa / Rol: Gerencia de Desarrollo 09/08/17 Objetivo Los objetivos de este programa son: transferir datos de una base de datos Origen a otra base de datos Destino de forma rápida eliminar datos de una base de datos ver las tablas de las cuales depende una tabla Este programa es una herramienta para los consultores, que deben utilizar para realizar transferencias de datos cuando se hacen liberaciones del sistema y la base de datos ha sido modificada estructuralmente (modificaciones de tablas y/o relaciones). Integridad referencial Debido a las relaciones de integridad referencial de las bases de datos, transferir o eliminar datos es una tarea que requiere cuidado. La Transferencia de datos de una base de datos Origen a otra base de datos Destino debe hacerse transfiriendo primero las tablas que no dependen de ninguna tabla, luego las que dependen de las primeras y así sucesivamente. La eliminación de datos, debe hacerse exactamente en el orden inverso. Si los datos a transferir de la base de datos Origen no son compatibles con las relaciones definidas en la base de datos Destino ocurrirá un error de integridad. Para evitar este inconveniente, es necesario ejecutar el programa VerifyIntegrity entre ambas bases de datos, solucionar las posibles inconsistencias y luego ejecutar BitTransferData. Por ejemplo: Tabla: arbranch Depende de: glacct glcc ivlocation Tabla: glacct Depende de: ninguna Tabla: glcc Depende de: ninguna Tabla: ivlocation Depende de: glacct glcc Para transferir arbranch, primero hay que transferir glacct, glcc e ivlocation. Archivo: D:\81948273.doc Página 2 de 8 Bit Sistemas Proyecto: BitTransferData Actividad: Doc. Técnica Versión: 1.0 Autor: Pablo Villa / Rol: Gerencia de Desarrollo 09/08/17 Diseño de relaciones de la base de datos Actualmente, nuestra base de datos BitData no contiene todas las relaciones entre las tablas que existen en teoría. Para manejar la información de las relaciones entre las tablas de BitData se han agregado dos tablas: GoTableRelationLevel y GoTableRelationLevelDet. Nota: Estas tablas se mantienen manualmente por el grupo de Desarrollo. GoTableRelationLevel: Contiene la información del nivel en el esquema de relaciones de cada tabla de la base de datos. Campos: TableId: nombre de tabla TableLevel: nivel de la tabla en el esquema de relaciones, el nivel de las tablas madre es 1 GoTableRelationLevelDet: Contiene la información: para una tabla, las tablas de las que depende. Campos: TableId: nombre de tabla DetailId: numero de detalle RelatedTable: nombre de tabla tal que TableId depende de RelatedTableId Ejemplo: GoTableRelationLevel TableId tableLevel Arbranch 3 GoTableRelationLevelDet tableId detailId relatedTable arbranch 1 glacct Id arbranch 2 glcc arbranch 3 ivlocation Archivo: D:\81948273.doc Página 3 de 8 Bit Sistemas Proyecto: BitTransferData Actividad: Doc. Técnica Versión: 1.0 Autor: Pablo Villa / Rol: Gerencia de Desarrollo 09/08/17 Funcionamiento del programa Interfaz de Usuario Datos Origen: String de conexión a la base de datos Origen. Datos Destino: String de conexión a la base de datos Destino. Combo Grupo de tablas: Grupo de tablas (de la base Origen) que se van a cargar en la lista Tablas a Transferir. El grupo de tablas debe estar ordenado según el nivel de cada tabla. Por defecto se utiliza el grupo BitTransferData que contiene todas las tablas de la base de datos bien ordenadas. Lista Tablas a Transferir: Lista de tablas ordenadas por numero de línea (goTableGroup.detail_id) del grupo de tablas definido en el combo Grupo de tablas. Archivo: D:\81948273.doc Página 4 de 8 Bit Sistemas Proyecto: BitTransferData Actividad: Doc. Técnica Versión: 1.0 Autor: Pablo Villa / Rol: Gerencia de Desarrollo 09/08/17 Lista Tablas fuera del grupo: Lista de tablas que pertenecen a la base de datos Origen pero no están incluidas en el grupo de tablas seleccionado. Botón Borrar: Elimina los datos de las tablas que han sido marcadas en la lista Tablas a Transferir y en la lista Tablas fuera del grupo de la base de datos Destino. Antes de eliminar los datos solicita confirmación del usuario. Botón Transferir: Transfiere los datos de las tablas que han sido marcadas en la lista Tablas a Transferir y en la lista Tablas fuera del grupo de la base de datos Origen a la base de datos Destino. Botón Dependencias: Mediante doble click sobre la lista de tablas a transferir o presionando el botón Dependencias, se invoca al formulario de Dependencias. Dependencias : Interfaz de usuario Utilidad Para la tabla seleccionada en el combo Tablas, muestra un árbol que representa jerárquicamente las tablas de las cuales depende. Se muestra también una lista de todas las tablas de las que depende la tabla seleccionada. Cada vez que se selecciona una tabla, se cargan el árbol y la lista sin eliminar el contenido anterior, de tal manera que es posible ver las dependencias de varias tablas a la vez. Archivo: D:\81948273.doc Página 5 de 8 Bit Sistemas Actividad: Doc. Técnica Versión: 1.0 Autor: Pablo Villa / Rol: Gerencia de Desarrollo 09/08/17 Proyecto: BitTransferData Modificaciones sobre BitData 4.10 - - Nuevas tablas goTableRelationLevel y goTableRelationLevelDet, ambas cargadas con los registros de las tablas correspondientes al momento de generación del programa. Se agregaron los registros correspondientes al grupo BitTransferData en la tabla goTableGroup. Se genero un script que crea las tablas nuevas para bases de datos SQL Server. \Bitwin\SQL SERVER\Scripts 1.0\goTableRelationLevel.log Componentes del programa Bit Sistemas SrvConnection.dll 1.3 Grales.dll 3.61 Bitobj.dll 3.75 Microsoft ADOX: Msadox.dll 2.6 ADO: Msado15.dll 2.6 Base de datos: Bitdata 4.10. Testing Casos de uso a tener en cuenta durante la fase de testing. - Base Origen: Access y Base Destino Access. Base Origen: SQL Server y Base Destino Access. Base Origen: Access y Base Destino SQL Server. Base Origen: SQL Server y Base SQL Server. Base Origen con datos no compatibles con las relaciones de la base destino. Performance: La transferencia de BitData Demo dura aproximadamente 7 minutos. Próxima versión - al seleccionar una tabla en la lista de tablas a transferir: verifica si las tablas de las que depende la tabla seleccionada han sido seleccionadas, en caso negativo, presenta un form con una lista que muestra las tablas relacionadas y permite marcarlas - estudiar aplicación a otras bases de datos (bitconfig por ejemplo, filters, etc.) poder seleccionar varias tablas de la lista de tablas a transferir y al presionar el botón Dependencias que cargue las dependencias de todas las seleccionadas Archivo: D:\81948273.doc Página 6 de 8 Bit Sistemas Proyecto: BitTransferData Actividad: Doc. Técnica Versión: 1.0 Autor: Pablo Villa / Rol: Gerencia de Desarrollo 09/08/17 Consultas utilizadas La carga de las tablas goTableGroup, goTableRelationLevel y goTableRelationLevel fue un proceso manual complejo. Para esto, se utilizaron algunas consultas que dejo documentadas aquí para su futuro uso. Consulta: _TablasSinPrevias Utilidad: Muestra las tablas de primer nivel, o sea, las que no tienen tablas de las que depende. Estas tablas deben tener asignado nivel 1 en la tabla goTableRelationLevel. SQL: SELECT goTableRelationLevel.tableId FROM goTableRelationLevel LEFT JOIN goTableRelationLevelDet ON goTableRelationLevel.tableId = goTableRelationLevelDet.tableId WHERE (((goTableRelationLevelDet.tableId) Is Null)); Consulta: _MaxLevelRelated Utilidad: Para las tablas que tienen dependencias, muestra el máximo nivel de las tablas de las que depende. SQL: SELECT goTableRelationLevelDet.tableId, Max(goTableRelationLevel.tableLevel) AS MáxDetableLevel FROM goTableRelationLevel INNER JOIN goTableRelationLevelDet ON goTableRelationLevel.tableId = goTableRelationLevelDet.relatedTableId GROUP BY goTableRelationLevelDet.tableId; Consulta: _TablasNivelError Utilidad: Muestra las listas tal que el nivel definido en la tabla goTableRelationLevel es incorrecto. El nivel de una tabla debe ser: el nivel máximo de sus tablas relacionadas + 1 SQL: SELECT [_MaxLevelRelated].tableId, [_MaxLevelRelated].MáxDetableLevel, goTableRelationLevel.tableLevel, [_MaxLevelRelated]![MáxDetableLevel]+1 = [goTableRelationLevel]![tableLevel] AS Expr1 FROM _MaxLevelRelated INNER JOIN goTableRelationLevel ON [_MaxLevelRelated].tableId = goTableRelationLevel.tableId WHERE ((([_MaxLevelRelated]![MáxDetableLevel]+1 = [goTableRelationLevel]![tableLevel])=False)) ORDER BY [_MaxLevelRelated].tableId; Consulta: _BitTransferDataGroup Utilidad: Una vez que las tablas goTableRelationLevel y goTableRelationLevel contienen los datos correctos, se ejecuta esta consulta para copiar y pegar los registros del grupo BitTransferData en la tabla goTableGroup. SQL: SELECT "BitTransferData" AS Expr1, goTableRelationLevel.tableId, "" AS Expr2, True AS Expr3, False AS Expr4, goTableRelationLevel.tableLevel FROM goTableRelationLevel; Archivo: D:\81948273.doc Página 7 de 8 Bit Sistemas Proyecto: BitTransferData Actividad: Doc. Técnica Versión: 1.0 Autor: Pablo Villa / Rol: Gerencia de Desarrollo 09/08/17 Consulta: _DependenciasRepetidas Utilidad: Muestra las tablas para las cuales se han definido dependencias repetidas. SQL: SELECT goTableRelationLevelDet.tableId, goTableRelationLevelDet.relatedTableId, Count(goTableRelationLevelDet.relatedTableId) AS CuentaDerelatedTableId FROM goTableRelationLevelDet GROUP BY goTableRelationLevelDet.tableId, goTableRelationLevelDet.relatedTableId; Archivo: D:\81948273.doc Página 8 de 8