Wir migrieren unsere Datenbank in ein neues Schema, möchten jedoch überprüfen, ob die Daten korrekt verschoben wurden.
Herkömmliche Datenvergleichstools können zwei Datenbanken auf Unterschiede vergleichen, wenn die Schemas identisch sind. In unserem Fall wurden Änderungen an den Tabellenentwürfen vorgenommen, aber alle Daten aus dem alten Schema befinden sich im neuen, sie wurden nur ein wenig verschoben, und ich muss sicherstellen, dass sie korrekt sind. Wir haben zig Millionen Zeilen, daher ist eine manuelle Inspektion keine Option.
Gibt es Werkzeuge, die bei dieser Art von Vergleich hilfreich sein könnten?
Wenn nicht, gibt es Bibliotheken / Frameworks, die dazu beitragen könnten, die Entwicklung einer benutzerdefinierten Lösung voranzutreiben?
Gerne verwende ich bei Bedarf eine datenbankspezifische Lösung, in diesem Fall für SQL Server 2008.
Meine Lösung: Ich vergleiche die beiden Datensätze, indem ich VIEW
für jede Tabelle in der alten Datenbank eine mit denselben Feldern wie in der neuen Datenbanktabelle erstelle .
Ich vergleiche dann die Daten mit der hier beschriebenen Technik: Der kürzeste, schnellste und einfachste Weg, zwei Tabellen in SQL Server zu vergleichen: UNION!
Ich habe Glück bei dieser Migration, da die gesamte Tabellenstruktur der alten Datenbank ähnelt und Felder von einer Tabelle in eine andere verschoben, gelöscht oder hinzugefügt werden. Im Fall des Löschens und Hinzufügens gibt es nichts zu vergleichen. Für die Felder, die verschoben oder aggregiert wurden, führe ich Berechnungen in der Ansicht durch, um die richtigen Informationen zum Vergleich bereitzustellen.
Der UNION
Vergleich zeigt mir nur die Zeilen mit Unterschieden. Sobald die Daten korrekt sind, erhalte ich eine leere Ergebnismenge.
Antworten:
Es ist nicht unmöglich, zwei verschiedene Schemata zu vergleichen. Es ist eine Berechnung, wie sicher Sie im Ergebnis sind. Ich habe im Wesentlichen von Bank Reconciliation Techniken geliehen
Wichtig: Bei dieser Abstimmung geht es nicht darum, sicherzustellen, dass das Ziel genau mit der Quelle im Datenkontext übereinstimmt (es gibt einen Grund, warum Sie auf ein neues System migrieren), sondern Sie müssen etwaige Unstimmigkeiten erklären!
Basis:
Ich habe den Vergleich im Allgemeinen in mehrere Methoden aufgeteilt (insbesondere für die detaillierten Metriken):
Techniken:
Unabhängig davon, mit welcher Methode ich erstellt habe, was verglichen werden soll, erhalte ich eine Reihe von Dateien / Ansichten / Datenbank, die die abgleichbaren Quell- und Zieldaten enthalten. Je nach Medium kann ich dann eines der allgemein verfügbaren Tools verwenden um sie zu vergleichen. Meine eigenen Vorlieben sind:
Dateivergleich
Erstellen Sie zwei verschiedene Ordner für SourceDB und DestinationDB (Zeit- / Versionsstempel, damit ich weiß, wann ich die Abstimmung durchgeführt habe) und geben Sie die Ausgabe meiner Metriken als relevant benannte Dateien aus. Verwenden Sie dann ein Vergleichstool (z. B. CSDiff ), um Unterschiede zu identifizieren
Excel-Vergleich
Insbesondere beim Umgang mit Managementberichten werde ich eine Reihe von Excel-Arbeitsmappen erstellen, um die Berichte zu vergleichen (im Wesentlichen VLookups verwenden und Summen vergleichen).
Datenvergleich
Anstatt die Abstimmungsdaten in Dateien oder Berichte auszugeben, geben Sie sie in separate DBs aus und vergleichen Sie die DBs mit Redgate SQL Data Compare
Andere Werkzeuge:
Keine dieser Methoden ausprobiert, aber eine schnelle Google-Suche nach "Datenabgleichstools" bietet:
Es gibt andere, aber diese sahen vernünftig aus
quelle
Wenn Sie Daten in zwei verschiedenen Datenbankdesigns vergleichen möchten, müssen Sie handcodiertes SQL schreiben, um Daten zu vergleichen.
Es gibt keine Framework-Bibliothek zum Überprüfen von Daten, die in zwei unterschiedlichen Datenbanken identisch sind.
Nur Sie wissen, was Sie geändert oder modifiziert haben
quelle
Es wird Ihnen unmöglich sein, verschiedene Schemata zu vergleichen. Um Ihr Problem zu lösen, würde ich herausfinden, welche Daten Sie vergleichen müssen. Ich würde dann auf jedem Server eine Ansicht erstellen, die die Daten zurückzieht, die ich vergleichen wollte (unter Berücksichtigung von Datentypen und dergleichen).
Sobald beide Ansichten identisch sind, würde ich ein Drittanbieter-Tool wie Red Gate Data Compare verwenden , um festzustellen , welche Zeilen unterschiedlich sind.
Klingt nach Schmerz. Viel Glück!
quelle
Vor ein paar Jahren habe ich ein Tool dafür geschrieben - einen Datenvergleich zwischen zwei Datenbanken. Seitdem habe ich es in eine kommerzielle Software umgewandelt und bei veröffentlicht
www.sql-server-tool.com
Das Programm - SCT für "SQL Server Comparison Tool" genannt (ich war nie gut darin, Dinge zu benennen :) - bietet viele Feinabstimmungsoptionen, z. B.: Ausgewählte Spalten ignorieren oder Vergleichsmethode angeben (Datensatz für Datensatz oder Primärschlüssel / Indexvergleich). Vergleichssitzungen können gespeichert und später erneut abgespielt werden, ohne dass die Parameter erneut eingegeben werden müssen. Befehlszeilenparameter können verwendet werden, um Vergleiche vollständig zu automatisieren.
Für zig Millionen Zeilen kann es etwas langsam sein - in diesem Fall würde ich empfehlen, mit einer kleineren Teilmenge von Daten zu beginnen - sagen wir, vergleichen Sie nur die ersten 1.000 Zeilen - und prüfen Sie, ob eine Feinabstimmung des Prozesses erforderlich ist.
Dariusz Dziewialtowski-Gintowt
quelle