[datadiff]: Konfigurieren eines Vergleichs
Ein Datenvergleich wird in einem [datadiff]-Abschnitt einer Client- oder Server-Konfigurationsdatei definiert und anschließend folgendermaßen durch Aufruf des Befehls data-diff mit DiffDog Server ausgeführt:
diffdogcmdlclient data-diff --c=client_config.ini reports
Um den Datenvergleich in der Konfigurationsdatei zu erstellen, fügen Sie einen neuen [datadiff:<name>-Abschnitt hinzu, wobei <name> der eindeutige Name zur Identifikation dieses Datenbankvergleichs ist. Im [datadiff]-Abschnitt wird definiert, welche Datenquellen die "linke" und die "rechte" Seite des Vergleichs bilden sollen. Die Datenquellen müssen bereits konfiguriert worden sein (siehe [datasource]: Einrichten von Datenquellen).
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. Beachten Sie, dass sich die Ausführung bei Aktivierung dieser Option eventuell verlangsamt.
enable-driver-logging=true
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. 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).
server-left=products
server-right=resourcesdb
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.
left=hr
right=testdb
Wenn Sie diese Optionen nicht definieren, müssen Sie stattdessen die Optionen server-left oder server-right (siehe oben) 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 die ausführbare Client-CLI läuft. 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 welchen 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.
map = 1=>"col2", 2=>"col3", "h"=>6, "i"=>"x"
Bei jedem der oben gezeigten Spaltenpaare lautet die Zuordnung: Spalte linke Seite => Spalte 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. So ist z.B. die linke Seite in dieser Zuordnung eine Datenbank, während die rechte Seite eine CSV-Datei ist:
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 die ausführbare Client-CLI 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 sind false (der Standardwert) und true, mit denen eine Berücksichtigung bzw. Ignorierung der Groß- und Kleinschreibung definiert wird.
server-output-path
Optionaler Parameter. Definiert den Pfad, unter dem die Vergleichsergebnisse auf dem Server-Rechner gespeichert werden. Wenn dieser Parameter nicht definiert ist, wird die Vergleichsausgabe in der Befehlszeile angezeigt (vorausgesetzt Sie haben die Option -quiet=true nicht definiert).
server-output-path=/path/on/server.xml
Wenn Client und Server beide auf demselben Rechner ausgeführt werden, sind server-output-path und client-output-path austauschbar verwendbar.
client-output-path
Optionaler Parameter. Definiert den Pfad, unter dem die Vergleichsergebnisse auf dem Client-Rechner gespeichert werden. 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=/path/on/client.xml
Wenn Client und Server beide auf demselben Rechner ausgeführt werden, sind server-output-path und client-output-path austauschbar verwendbar.
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 standardmäßig 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.
