Estamos migrando nuestra base de datos a un nuevo esquema, pero queremos validar que los datos se hayan movido correctamente.
Las herramientas tradicionales de comparación de datos pueden comparar dos bases de datos por diferencias si los esquemas son los mismos. En nuestro caso, ha habido cambios en los diseños de la tabla, pero todos los datos del esquema anterior están en el nuevo, simplemente se han movido un poco y necesito asegurarme de que sean correctos. Tenemos decenas de millones de filas, por lo que la inspección manual no es una opción.
¿Hay alguna herramienta que pueda ayudar en este tipo de comparación?
Si no, ¿hay alguna biblioteca / marco que pueda ayudar a iniciar el desarrollo de una solución personalizada?
Me complace utilizar una solución específica de la base de datos si es necesario, en este caso para SQL Server 2008.
Mi solución: estoy comparando los dos conjuntos de datos creando uno VIEW
de cada tabla en la base de datos anterior con los mismos campos que la nueva tabla de base de datos.
Luego comparo los datos usando la técnica descrita aquí: La forma más corta, rápida y fácil de comparar dos tablas en SQL Server: ¡UNION!
Tengo suerte en esta migración, ya que la estructura general de la tabla es similar a la base de datos anterior, con campos movidos de una tabla a otra, eliminados o agregados. En el caso de los descartados y agregados no hay nada que comparar, para los campos que se han movido o agregado, hago cálculos en la vista para proporcionar la información correcta para la comparación.
La UNION
comparación me muestra solo las filas con diferencias, por lo que en cuanto los datos son correctos, obtengo un conjunto de resultados vacío.
Respuestas:
No es imposible comparar dos esquemas diferentes, es un cálculo de la confianza que tiene en el resultado. Esencialmente tomé prestado de las técnicas de reconciliación bancaria
Importante: Esta conciliación no se trata de asegurarse de que el destino coincida exactamente con la fuente en su contexto de datos (hay una razón por la que está migrando a un nuevo sistema), ¡pero sí necesita explicar cualquier discrepancia!
Base:
Generalmente he dividido la comparación en varios métodos (en particular para las métricas detalladas):
Técnicas:
No importa qué método haya usado para producir lo que se comparará, termino con un conjunto de archivos / vistas / dbs que contienen los datos de origen y destino reconciliables, luego, dependiendo del medio, puedo usar una de las herramientas comúnmente disponibles para compararlos Mis propias preferencias son:
Comparación de archivos
Cree dos carpetas diferentes para SourceDB y DestinationDB (hora / versión estampada para que sepa cuándo hice la conciliación) y descargue el resultado de mis métricas como archivos con nombres relevantes, luego use una herramienta de comparación (como CSDiff ) para identificar diferencias
Comparación de Excel
En particular, cuando trate con informes de administración, crearé un conjunto de Excel de libros de trabajo para comparar los informes (en esencia, utilizando VLookups y comparando totales)
Comparación de datos
En lugar de enviar los datos de reconciliación a archivos o informes, envíelos a bases de datos separadas, luego use algo como Redgate SQL Data Compare para comparar las bases de datos
Otras herramientas:
No probé ninguno de estos, pero una búsqueda rápida en Google en 'Herramientas de reconciliación de datos' proporciona:
Hay otros, pero esos fueron los que parecían razonables
fuente
Si desea comparar datos en dos diseños de bases de datos diferentes, entonces tendría que escribir SQL codificado a mano para comparar datos.
No hay una biblioteca de marco para verificar que los datos sean iguales en dos bases de datos dispares.
Solo tú sabes lo que has cambiado o modificado
fuente
Te será imposible comparar diferentes esquemas. Para resolver su problema, averiguaría qué datos necesita comparar. Luego crearía una vista en cada servidor que retiraría los datos que quería comparar (tener en cuenta los tipos de datos y demás).
Una vez que ambas vistas son iguales, usaría una herramienta de terceros como Red Gate Data Compare para ver qué filas son diferentes.
Suena como un dolor. ¡Buena suerte!
fuente
Hace un par de años escribí una herramienta para hacer precisamente eso: una comparación de datos entre dos bases de datos. Desde entonces lo convertí en un software comercial y lo publiqué en
www.sql-server-tool.com
El programa, llamado SCT para "Herramienta de comparación de SQL Server" (nunca fui bueno para nombrar cosas :), tiene muchas opciones de ajuste fino, como: ignorar las columnas seleccionadas o especificar el método de comparación (registro por registro o clave principal / comparación de índice). Las "sesiones" de comparación pueden guardarse y reproducirse más tarde sin necesidad de volver a ingresar los parámetros. El parámetro de línea de comando se puede usar para automatizar completamente las comparaciones.
Para decenas de millones de filas puede ser un poco lento, en ese caso, recomendaría comenzar con un subconjunto de datos más pequeño, digamos comparar solo las primeras 1,000 filas, y ver si se necesita un ajuste fino del proceso.
Dariusz Dziewialtowski-Gintowt
fuente