data-diff, compare-data
Der Befehl data-diff wird an einem oder mehreren zuvor konfigurierten Datenbankdatenvergleichsaufträgen ausgeführt. Standardmäßig wird das Vergleichsergebnis im XML-Format in der Befehlszeile angezeigt.
Am einfachsten lassen sich *.dbdif-Dateien mit DiffDog Server ausführen, wenn DiffDog Server entweder auf demselben Rechner wie DiffDog Desktop oder auf einem Windows-Rechner installiert ist. Wenn DiffDog Server auf einem anderen Rechner oder Betriebssystem ausgeführt wird, gelten die folgenden Einschränkungen:
•Wenn CSV-Dateien am Vergleich beteiligt sind, wird die Ausführung von .dbdif-Dateien nur auf Windows Servern unterstützt. Damit der Vergleich funktioniert, müssen alle CSV-Dateipfade, die auf dem Desktop-Rechner gültig waren, auch auf dem Server-Rechner gültig sein.
•Wenn Datenbankverbindungen am Vergleich beteiligt sind, muss der Server-Rechner für die Verarbeitung der Datenbankverbindung konfiguriert sein und dazu in der Lage sein, d.h. auf dem Zielbetriebssystem müssen alle Datenbanktreiber vorhanden sein und andere für die Verbindung erforderlichen Voraussetzungen erfüllt werden. Wenn die .dbdif-Datei etwa eine Verbindung enthält, für die ein ODBC-Treiber des Datenbankanbieters benötigt wird, so muss der Treiber auch auf dem Server-Rechner installiert sein. Beachten Sie, dass einige unter Windows unterstützte Datenbankverbindungsmethoden auf Linux und macOS nicht unterstützt werden. Informationen dazu finden Sie unter Unterstützte Datenbanken.
Wenn Sie die Vergleichsaufträge direkt in DiffDog Server einrichten (anstatt *.dbdif-Dateien zu verwenden), können Sie diese plattformunabhängig ausführen.
Syntax
diffdogserver data-diff [options] {job} ...
diffdogcmdlclient data-diff [options] {job} ...
Anmerkungen
•Das Argument job bezieht sich auf einen in der Client-Konfigurationsdatei definierten [datadiff]-Abschnitt.
•Sie können das Argument job mehrmals definieren, um bei einer Befehlsausführung mehrere Datenbankvergleichsaufträge auf einmal auszuführen.
•Die Optionen --server und --port sind nur auf diffdogcmdlclient anwendbar. Sie definieren die Verbindungsinformationen des Servers.
•Sie können die Art der Ausgabe (Text, XML) durch Definition der Option output-mode entweder in der Konfigurationsdatei oder über die Befehlszeile (siehe Optionen unten) definieren.
•Der Pfad zur Ausgabedatei wird entweder mit der Option client-output-path oder der Option server-output-path definiert (siehe Beispiel unten).
•Um das Vergleichsergebnis in Form eines numerischen Werts zu erhalten, überprüfen Sie nach Ausführung dieses Befehls den Wert der Umgebungsvariablen %ERRORLEVEL%. Die möglichen Werte sind:
Exit-Code | Bedeutung |
0 | Es gibt keine Unterschiede. |
1 | Es gibt Unterschiede. |
2 | Es ist ein Fehler aufgetreten. |
Optionen
Definiert den Pfad zu einer Client-Konfigurationsdatei, die die Datenvergleichsinformationen und die Informationen über die Verbindung zum DiffDog Server enthält.
Wenn Sie die Option --c nicht definieren, versucht diffdogcmdlclient die Client-Konfigurationsdatei aus demselben Verzeichnis wie die ausführbare Datei zu lesen. Wenn sich keine Konfigurationsdatei im selben Verzeichnis befindet, werden die in der Befehlszeile durch den CLI-Befehle showcfg und im Kapitel Client-Konfigurationsdatei beschriebenen Standardwerte verwendet.
|
Definiert, ob Informationen, Warnungen oder Fehlermeldungen im Log ausgegeben werden sollen. Gültige Werte sind:
•none: Unterdrückt die Protokollierung •info: Informationen, Warnungen und Fehlermeldungen ausgeben •warning: Fehler und Warnmeldungen ausgeben •error: (Standardeinstellung) Nur Fehlermeldungen ausgeben
|
Definiert den Port, an dem DiffDog Server für Requests empfangsbereit ist. Wenn diese Option nicht definiert ist, wird der in der Client-Konfigurationsdatei definierte Port (standardmäßig 29800) verwendet. Die Option --port setzt die Einstellung in der Konfigurationsdatei außer Kraft.
|
Definiert den Server, auf dem DiffDog Server für Requests empfangsbereit ist. Wenn diese Option nicht definiert ist, wird der in der Client-Konfigurationsdatei definierte Server (standardmäßig 127.0.0.1) verwendet. Die Option -- server setzt die Einstellung in der Konfigurationsdatei außer Kraft.
|
Verhindert, dass die Standardausgabe in der Befehlszeile angezeigt wird. Gültige Werte sind:
•true: Standardausgabe nicht im Terminal-Fenster anzeigen. •false: (Standardwert) Standardausgabe im Terminal-Fenster anzeigen.
|
Definiert des Ausgabeformat des generierten Berichts. Die folgenden Werte stehen zur Verfügung: text, sql, xml, html. Die Standardoption ist sql.
Die Generierung des Berichts im SQL-Format ist sinnvoll, wenn es sich bei der rechten Seite des Datenvergleichs um eine Datenbank handelt. Der Bericht enthält SQL-Anweisungen, die Daten von der linken auf der rechten Seite des Vergleichs zusammenführen. Wenn z.B. auf der rechten Seite Zeilen fehlen, werden INSERT-Anweisungen generiert. Umgekehrt, wenn auf der rechten Seite zusätzliche Zeile vorhanden sind, werden DELETE-Anweisungen generiert. Für geänderte Werte werden UPDATE-Anweisungen generiert.
Wenn jedoch die linke Seite des Vergleichs eine Datenbank und die rechte eine CSV-Datei ist, so ist die Standardoption text.
|
Beispiele
Mit dem folgenden Befehl wird ein einziger Datenvergleichsauftrag namens reports ausgeführt.
diffdogserver data-diff reports
Dabei wird vorausgesetzt, dass die Client-Konfigurationsdatei einen [datadiff:reports]-Abschnitt enthält, z.B.:
[datasource:left_data]
type = sqlite
path = c:\comparisons\db\Nanonull_Left.sqlite
table = "main"."products"
[datasource:right_data]
type = adonet
connection = Data Source=SQLSERV16;Initial Catalog=NANONULL;MultipleActiveResultSets=True;Password=7hiu57;Persist Security Info=True;User ID=altova
assembly = System.Data.SqlClient.SqlClientFactory, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
class = System.Data.SqlClient
table = [NANONULL].[dbo].[PRODUCTS]
[datadiff:reports]
left = left_data
right = right_data
map = 1 => 1, 2 => 2, 3 => 3
output-mode=text
client-output-path=c:\comparisons\db\result.txt
[datasource:left_data] und [datasource:right_data] in der oben gezeigten Konfigurationsdatei sind zwei Datenquellen, aus denen die Daten für die linke und rechte Seite des Vergleichs stammen. left_data verweist auf die Tabelle products aus einer lokalen SQLite-Datenbank. right_data verweist auf die Tabelle PRODUCTS einer SQL-Server-Datenbank. Beide Tabellen haben einen Primärschlüssel, daher muss keine Schlüsselspalte mit der Option key-column-by-name definiert werden.
Im Abschnitt [datadiff:reports] werden die beiden obigen Datenquellen als die linke und rechte Seite des Vergleichs definiert. Zusätzlich dazu werden darin die zu vergleichenden Spalten zugeordnet. In diesem Beispiel werden die erste, zweite und dritte Spalte aus der linken Datenquelle jeweils der ersten, zweiten und dritten Spalte aus der rechten Datenquelle zugeordnet. Als Format des Vergleichsergebnisse wurde Text definiert. Das Vergleichsergebnis wird in einer lokalen Textdatei gespeichert.
Eine vollständige Liste aller Optionen, die Sie in einer Datenquelle definieren können, finden Sie unter Einrichten von Datenquellen. Informationen zu den Optionen, die Sie in einem Datenbankvergleichsauftrag definieren können, sind unter Einrichten von CSV- und Datenbankvergleichen beschrieben.