Einrichten von CSV- und Datenbankvergleichen
Bei einem Datenbankdatenvergleich wird eine "linke" Datenquelle (Tabelle, Ansicht oder eine durch eine SQL-Abfrage abgerufene Datensatzgruppe) mit einer "rechten" Datenquelle verglichen.
Um einen Datenvergleich zu konfigurieren, öffnen Sie die Client-Konfigurationsdatei und fügen Sie einen neuen [datadiff:<name>-Abschnitt hinzu, wobei <name> der eindeutige Name zur Identifikation dieses Datenbankvergleichs ist. Im Datenbankvergleichsauftrag wird definiert, was die "linke" Datenquelle und was die "rechte" Datenquelle sein soll. Es wird davon ausgegangen, dass Sie bereits zwei oder mehr Datenquellen, wie unter Einrichten von Datenquellen beschrieben, erstellt haben.
Weiter unten finden Sie eine Liste der Parameter, die im Abschnitt [datadiff] vorkommen können.
enable-driver-logging
Optionaler Parameter. Aktivieren Sie die Option, wenn der Datenbanktreiber im Falle von Fehlern detailliertere Informationen liefern soll. Beispiel:
enable-driver-logging=true |
Beachten Sie, dass sich die Ausführung bei Aktivierung dieser Option eventuell verlangsamt.
server-left, server-right
Bedingter Parameter. Mit dieser Option können Sie festlegen, dass die linke oder rechte Datenquelle des Vergleichs in der Server-Konfigurationsdatei (und nicht in der Client-Konfigurationsdatei) definiert ist. Die Option muss auf eine benannte Datenquelle verweisen, wie sie in der Server-Konfigurationsdatei auf dem Rechner, auf dem DiffDog Server ausgeführt wird, definiert ist. Beispiel:
server-left=products server-right=resourcesdb |
Um auf eine Datenquelle auf dem Rechner, auf dem der DiffDog-Befehlszeilenclient läuft, zu verweisen, verwenden Sie stattdessen die Optionen left und right (siehe unten).
left, right
Bedingter Parameter. Mit dieser Option definieren Sie die linke oder rechte Seite des Vergleichs. Die Option muss sich auf eine benannte Datenquelle [datasource:<some_name>] beziehen, wie sie in der Client-Konfigurationsdatei auf dem Rechner, auf dem DiffDog Server ausgeführt wird, definiert ist. Beispiel:
left=hr right=testdb |
Wenn Sie diese Optionen nicht definieren, müssen Sie stattdessen die Optionen server-left oder server-right definieren. Auch eine Kombination aus Clientdatenquellen und Serverdatenquellen ist möglich, z.B.:
left=hr server-right=testdb |
Im obigen Beispiel befindet sich die Datenquelle "hr" auf dem Rechner, auf dem der DiffDog-Befehlszeilenclient (ohne einen Server) ausgeführt wird. Die Datenquelle "testdb" ist in der Server-Konfigurationsdatei auf dem Rechner, auf dem DiffDog Server ausgeführt wird, definiert.
map
Optionaler Parameter. Mit dieser Option definieren Sie, welche Spalten der linken Seite des Vergleichs mit denen auf der rechten Seite des Vergleichs verglichen werden sollen. So könnten Sie z.B. die Spalten col1, col2, col3 aus der "linken" Tabelle mit den Spalten colA, colB, colC aus der "rechten" Datensatzgruppe vergleichen. Zur Angabe einer Spalte können Sie entweder die Ordinalzahl der Spalte, beginnend mit 1 oder den Spaltennamen definieren. Spaltennamen müssen in Anführungszeichen gesetzt werden. Beispiel:
map = 1 => "col 2", 2 => "col1", "h" => 6, "i" => "x" |
Bei jedem der oben gezeigten Spaltenpaare steht der Teil vor "=>" für die "linke Seite" und der Teil nach "=>" für die "rechte Seite".
Im Fall von CSV-Dateien können Sie Spalten anhand ihres Spaltennamens (wenn die erste Zeile eine Kopfzeile ist) oder anhand der Nummerierung c1, c2, usw. referenzieren, wobei die Nummer dem Spaltenindex beginnend mit 1 entspricht.
map=1=>c1,2=>c2 |
Wenn Sie keine Spaltenzuordnungen definieren, versucht die Applikation, die Spalten anhand ihres Namens und Datentyps automatisch zuzuordnen. Wenn die Spalten auf der linken und rechten Seite jedoch unterschiedliche Namen und Typen haben, funktioniert dies nicht immer korrekt.
xml-aware
Optionaler Parameter. Wenn diese Option aktiviert ist, wird bei Datenbankfeldern vom Typ XML anstatt eines Textvergleichs ein XML-Vergleich durchgeführt. Dies gilt nur für Felder, deren Datentyp vom Treiber als XML erkannt werden. Datenbankfelder, in denen XML-Daten als varchar oder clob gespeichert sind, sind von dieser Option nicht betroffen. Wenn solche Felder als XML-Typ behandelt werden sollen, verwenden Sie anstelle von table die Option sql und führen Sie mit Hilfe von SQL-Abfragen eine Typkonvertierung in XML durch.
Wenn Sie diese Option definieren, werden auch alle in der Konfigurationsdatei oder in der Befehlszeile definierten XML-Vergleichsoptionen angewendet. Wenn DiffDog unter Windows auf demselben Rechner wie der DiffDog-Befehlszeilenclient installiert ist, so werden auch die in der Registry vorhandenen XML-Optionen angewendet. DiffDog Server liest die Windows Registry-Optionen nicht. Sie können die aktuellen Konfigurationsoptionen des Clients jederzeit durch Ausführung des Befehls showcfg anzeigen. Um die Konfigurationsoptionen des Servers zu sehen, führen Sie den Befehl showcfg der ausführbaren Server-Datei aus.
Eine Referenz zu allen XML-Vergleichsoptionen finden Sie unter dem Befehl diff.
whitespace-mode
Optionaler Parameter. Nur auf Datenbankfelder vom Typ Text wie varchar, clob usw. anwendbar. Mit dieser Option definieren Sie, wie Whitespace-Zeichen beim Vergleich behandelt werden sollen. Die folgenden Zeichen sind Whitespace-Zeichen: Leerzeichen, Tabulator, Wagenrücklauf (Carriage Return) und Zeilenvorschub (Line Feed).
normalize | Text A gilt als identisch mit Text B, wenn die Zeichen in Text A nach der Normalisierung den Zeichen in Text B entsprechen. “Normalisierung” bedeutet, dass mehrere aufeinander folgenden Whitespace-Zeichen durch ein einziges Leerzeichen ersetzt werden. Auch vorangestellte und nachstehende Whitespace-Zeichen werden in jeder Textzeile gekürzt. |
strip | Text A gilt als identisch mit Text B, wenn die Zeichen in Text A nach der Entfernung der Whitespace-Zeichen denen in Text B entsprechen, d.h. alle Whitespace-Zeichen werden aus dem Text entfernt und als nicht relevant für den Vergleich betrachtet. |
ignore-case
Optionaler Parameter. Nur auf Datenbankfelder vom Typ Text wie varchar, clob usw. anwendbar. Gültige Werte:
true | Führt einen Vergleich ohne Berücksichtigung der Groß- und Kleinschreibung durch (z.B. werden "A" und "a" als identisch behandelt). |
false | (Standardwert) Führt einen Vergleich unter Berücksichtigung der Groß- und Kleinschreibung durch (z.B. werden "A" und "a" als nicht identisch behandelt). |
server-output-path
Optionaler Parameter. Definiert den Pfad, unter dem die Vergleichsergebnisse auf dem Server-Rechner gespeichert werden, z.B.
server-output-path=/path/on/server.xml |
Wenn der DiffDog-Befehlszeilenclient und DiffDog Server beide auf demselben Rechner ausgeführt werden, sind server-output-path und client-output-path austauschbar verwendbar.
Wenn dieser Parameter nicht definiert ist, wird die Vergleichsausgabe in der Befehlszeile angezeigt (vorausgesetzt Sie haben die Option -quiet=true nicht definiert).
client-output-path
Optionaler Parameter. Definiert den Pfad, unter dem die Vergleichsergebnisse auf dem Client-Rechner gespeichert werden, z.B.
client-output-path=/path/on/client.xml |
Wenn dieser Parameter nicht definiert ist, wird die Vergleichsausgabe in der Befehlszeile angezeigt (vorausgesetzt Sie haben die Option -quiet=true nicht definiert).
output-mode
Optionaler Parameter. Definiert das Ausgabeformat des Vergleichsergebnisses. Gültige Werte sind text, xml und sql z.B.:
output-mode=xml |
Wenn diese Option nicht definiert ist, ist der Standardwert text.
Beachten Sie, dass der Wert sql nur dann sinnvoll ist, wenn die rechte Seite des Vergleichs eine Datenbank ist. Wenn output-mode=sql, enthält der Vergleichsbericht SQL-Skripts zum Zusammenführen der Daten aus der linken Seite auf der rechten Seite des Vergleichs.
treat-null-as-empty
Optionaler Parameter. Aktivieren Sie diese Option nur, wenn NULL-Datenbankwerte als leere Strings behandelt werden sollen.
treat-null-as-empty=false |
Im Beispiel unten ergibt ein Vergleich der beiden unten gezeigten Datensatzgruppen einen Unterschied, da die zweite Zeile auf der linken Seite leer und nicht mit der zweiten Zeile auf der rechten Seite identisch ist. Wenn Sie für die Option treat-null-as-empty jedoch true definieren, werden beide Datensatzgruppen als identisch behandelt.
![dds_null_recordsets](./images/dds_null_recordsets.png)