Einrichten von Datenquellen
Bevor Sie Tabellendaten aus einer Datenbank vergleichen können, muss eine Datenquelle, die die Datenbankverbindungsinformationen sowie andere Konfigurationsparameter beinhaltet, konfiguriert werden. Für jede Datenbanktabelle, Ansicht oder benutzerdefinierte SQL-Abfrage, die im Vergleich berücksichtigt werden soll, muss eine Datenquelle vorhanden sein. Wenn am Vergleich CSV-Dateien beteiligt sind, muss auch für jede CSV-Datei eine Datenquelle vorhanden sein.
Um eine Datenquelle zu konfigurieren, öffnen Sie die Client-Konfigurationsdatei und fügen Sie einen neuen [datasouce:<name>]-Abschnitt hinzu, wobei <name> der eindeutige Name zur Identifikation dieser Datenquelle ist. Weiter unten finden Sie eine Liste der Parameter, die im Abschnitt [datasource] vorkommen können.
Sie können Datenquellen auch zur Server-Konfigurationsdatei hinzufügen. Dies ist nützlich, wenn Sie von dem Rechner aus, auf dem DiffDog Server installiert ist (und nicht vom DiffDog Befehlszeilenclient aus) eine Verbindung zur Datenquelle herstellen müssen. Beachten Sie jedoch, dass es bei serverseitigen Verbindungen, bei denen für Datenbanken wie SQL Server eine Windows-Authentifizierung erforderlich ist, in diesem Fall zu Problemen kommen kann, da der DiffDog Server-Dienst als separater Benutzer läuft, der möglicherweise keinen Zugriff auf die Datenbank hat. In diesem Fall sollten Sie die Datenquelle in der Client-Konfigurationsdatei definieren - der DiffDog-Befehlszeilenclient wird als der Benutzer ausgeführt, der den Befehl data-diff ausführt.
Wie oben erwähnt, muss mit jeder Datenquelle eine einzige Tabelle, Ansicht oder eine sonstige durch eine SQL-Abfrage abgerufene benannte Datensatzgruppe bereitgestellt werden. Definieren Sie zu diesem Zweck die unten stehenden Optionen table oder sql (die einander gegenseitig ausschließen). Für jede Tabelle, Ansicht oder Datensatzgruppe muss es mindestens eine Spalte geben, die die Eindeutigkeit jeder einzelnen Zeile sicherstellt. Diese Spalte (es können auch mehrere Spalten sein) werden in der Folge als "Schlüsselspalten" bezeichnet. Wenn die Tabelle einen Primärschlüssel hat, ist bereits eine Schlüsselspalte vorhanden, wodurch die Eindeutigkeit der Zeile gewährleistet ist. Andernfalls wird empfohlen, eine oder mehrere Spalten zu definieren, die als "Schlüsselspalten" behandelt werden sollen. Definieren Sie dazu die unten beschriebenen Optionen key-columns-by-name und key-columns-by-ordinal.
Typ
Obligatorischer Parameter. Definiert den Typ der Datenbankverbindung. Gültige Werte sind: ado, adonet, csv, jdbc, odbc, postgresql und sqlite. Beispiel:
type=sqlite |
Verbindungen vom Typ csv, postgresql und sqlite sind vordefiniert und benötigen keine Treiber. Wählen Sie bei anderen Datenbankarten eine für den Rechner, auf dem der Vergleichsauftrag ausgeführt wird, passende Datenbankverbindungsmethode aus. Bei solchen Verbindungen müssen die entsprechenden Datenbanktreiber auf dem Rechner installiert sein. Nähere Informationen dazu finden Sie unter Unterstützte Datenbanken.
path
Dieser Parameter definiert den Pfad zur Datenbankdatei. Dieser Parameter ist nur bei CSV- und SQLite-Datenbanken anwendbar. Definieren Sie diesen Parameter nicht, wenn Sie den connection-Parameter definieren, da diese beiden Parameter einander gegenseitig ausschließen.
path=C:\Articles.sqlite |
SQLite
path=C:\data.csv |
CSV
connection
Bedingter Parameter. Definiert den Datenbank-Verbindungsstring. Definieren Sie diesen Parameter nicht, wenn Sie den path-Parameter definieren, da diese beiden Parameter einander gegenseitig ausschließen.
connection=Data Source=DBSQLSERV;User ID=altova_user;Password=dhjdf84h;Provider=SQLNCLI11.1;Initial Catalog=NANONULL;Persist Security Info=true |
SQL Server (ADO)
connection=jdbc:db2://mydb2-105:50000/NANONULL |
DB2 (JDBC)
connection=jdbc:oracle:thin:@dbora12c:1521:orcl12c |
Oracle (JDBC)
connection=my.dbserver.com |
PostgreSQL (Nativ)
Anmerkung: | Bei nativen PostgreSQL-Verbindungen kann connection auch die IP-Adresse des Datenbankservers, z.B. 127.0.0.1 sein. Die Datenbank und der Port einer nativen PostgreSQL-Verbindung werden in den Optionen database und port definiert. |
Mit dem Befehl db-drivers können Sie die auf dem lokalen Rechner verfügbaren Verbindungen abrufen. Diese werden in einem Format angezeigt, das Sie einfach kopieren und einfügen können. Wenn Sie außerdem DatabaseSpy installiert und lizenziert haben, können Sie von dort aus eine Datenbankverbindung herstellen und die Verbindungsinformationen anschließend, wie im Fenster "Eigenschaften" angezeigt, wiederverwenden.
extend-classpath
Dieser Parameter ist nur auf JDBC-Verbindungen anwendbar. Er ist optional und dient dazu, den Java Class Path auf dem Rechner, auf dem DiffDog Server ausgeführt wird, zu erweitern. Dies ist unter Umständen z.B. nützlich, wenn Sie nicht die Möglichkeit oder die nötigen Rechte haben, um die Umgebungsvariable CLASSPATH des Betriebssystems zu ändern. Wenn alle für die JDBC-Verbindung benötigten Class Paths bereits über die Umgebungsvariable CLASSPATH definiert wurden, besteht keine Notwendigkeit, diesen Wert zu definieren.
Wenn Sie diesen Wert definieren, wird er zusätzlich zu dem eventuell bereits in der Umgebungsvariablen CLASSPATH definierten Wert berücksichtigt. So werden z.B. mit dem folgenden Wert zwei .jar-Dateien zum Class Path hinzugefügt, um eine Verbindung zu einer IBM DB2-Datenbank herzustellen:
extend-classpath=C:\jdbc\db2\db2jcc.jar;C:\jdbc\db2\db2jcc_license_cu.jar |
Die in der CLASSPATH-Variablen definierten JDBC-Treiberpfade sowie alle im Parameter extend-classpath definierten .jar-Dateipfade werden der Java Virtual Machine (JVM) bereitgestellt. Die JVM entscheidet anschließend, welche Treiber zur Herstellung einer Verbindung verwendet werden sollen. Es wird empfohlen, die in die JVM geladenen Java-Klassen im Auge zu behalten, damit es zu keinen potenziellen JDBC-Treiberkonflikten und unerwarteten Ergebnissen bei der Herstellung der Datenbankverbindung kommt. |
database
Zwingend erforderlich und nur auf native PostgreSQL-Verbindungen anwendbar. Definiert die Datenbank der PostgreSQL-Verbindung.
database = ZooDB |
port
Definiert den Port der Postgre-Datenbankverbindung. Ist nur auf native PostgreSQL-Datenbankverbindungen anwendbar.
separator
Optionaler Parameter. Nur bei CSV-Datenquellen anwendbar. Er gibt das in der CSV-Datei verwendete Feld-Trennzeichen an. Wenn dieser Parameter nicht definiert wird, wird als Standardtrennzeichen das Komma verwendet. Gültige Werte sind comma (Standardeinstellung), tab und semicolon.
separator=comma |
table
Bedingter Parameter. Definiert den vollständigen Namen der Datenbanktabelle oder -ansicht, die im linken oder rechten Bereich des Vergleichs verwendet werden soll. Wenn sie diesen Parameter konfigurieren, definieren Sie den Parameter sql nicht, da diese beiden Parameter einander gegenseitig ausschließen. Beispiele:
table=[HR].[dbo].[Employees] |
SQL Server
table="ALTOVA_ADMIN"."customers" |
IBM DB2
Tipp: | Sie können den vollständigen Tabellennamen mit DatabaseSpy einfach durch Rechtsklick auf die Tabelle im Online Browser und Auswahl des Kontextmenübefehls In neuem SQL-Editor anzeigen | Pfad abrufen. |
key-columns-by-name
Es sollte zu jeder Tabelle, Ansicht oder Datensatzgruppe mindestens eine Spalte geben, die die Eindeutigkeit jeder Zeile gewährleistet. Diese Spalte (es können auch mehrere Spalten sein) werden in der Folge als "Schlüsselspalten" bezeichnet. Wenn die Tabelle einen Primärschlüssel hat, ist bereits eine Schlüsselspalte vorhanden, wodurch die Eindeutigkeit der Zeile gewährleistet ist. Andernfalls wird empfohlen, eine oder mehrere Spalten zu definieren, die als "Schlüsselspalten" behandelt werden sollen. Dabei muss es sich nicht notwendigerweise um Spalten handeln, die Teil eines richtigen Primärschlüssels oder eindeutigen Schlüssels in der Tabelle bilden. Beispiele:
key-columns-by-name="guid" |
key-columns-by-name="first_name","last_name","email" |
Die Definition von "Schlüsselspalten" ist optional, wird aber empfohlen. Wenn Sie die Schlüsselspalten nicht definieren, ermittelt die Applikation diese automatisch. Dies funktioniert aber unter Umständen nicht für alle Datenbanktreiber einheitlich. Außerdem funktioniert diese automatische Ermittlung nur bei Tabellen oder Ansichten, daher wird empfohlen, die Schlüsselspalten explizit zu definieren, wenn Sie SQL-Abfragen durchführen, deren Ergebnis berechnete Werte oder von gespeicherten Prozeduren zurückgegebene Resultate sind.
Wenn Sie Schlüsselspalten definieren, muss die Anzahl der Schlüsselspalten für die "linke" und die "rechte" Datenquelle dieselbe sein. Wenn Sie z.B. zwei Schlüsselspalten für die linke Datenquelle und nur eine Schlüsselspalte für die rechten Datenquelle definieren, schlägt der Vergleich mit einem Fehler fehl. |
Sie können Schlüsselspalten im Fall von CSV-Dateien anhand ihres Namens referenzieren:
•Wenn die erste Zeile der CSV-Datei die Spaltennamen enthält, können Sie den Spaltennamen verwenden, z.B:
key-columns-by-name="first","last" |
•Wenn die CSV-Datei keine Kopfzeile enthält, können Sie die Namen c1, c2, c3, usw., bei denen jede Zahl für eine bestimmte Spalte steht, verwenden, z.B:
key-columns-by-name=c1,c2 |
key-columns-by-ordinal
Sie können eine "Schlüsselspalte" entweder nach Name (siehe oben) oder nach Ordnungszahl in der Tabelle, beginnend mit 1 definieren. Mit Hilfe dieser Option können Sie Schlüsselspalten nach ihrer Ordnungszahl definieren: Beispiele:
key-columns-by-ordinal=1 |
key-columns-by-ordinal=1,2,5 |
Wenn Sie Schlüsselspalten definieren, muss die Anzahl der Schlüsselspalten für die "linke" und die "rechte" Datenquelle dieselbe sein. |
user
Bedingter Parameter. Definiert den Benutzernamen, der für die Verbindung mit der Datenbank erforderlich ist. Dieser Parameter ist nicht erforderlich, wenn die Datenbank anonyme Verbindungen zulässt oder wenn der Verbindungsstring den Benutzernamen bereits enthält (siehe Parameter connection).
pass
Bedingter Parameter. Definiert das Passwort für die Verbindung mit der Datenbank. Dieser Parameter ist nicht erforderlich, wenn die Datenbank anonyme Verbindungen zulässt oder wenn der Verbindungsstring das Passwort bereits enthält (siehe Parameter connection).
assembly
Diese Option ist für ADO.NET-Verbindungen zwingend erforderlich. Beispiele:
assembly=System.Data.SqlClient.SqlClientFactory, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 |
.NET Framework-Datenanbieter für SQL Server
assembly=IBM.Data.DB2.iSeries.iDB2Factory, IBM.Data.DB2.iSeries, Version=12.0.0.0, Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26 |
.NET Framework Data Provider für IBM i
Mit dem Befehl db-drivers können Sie die auf dem lokalen Rechner verfügbaren .NET-Assemblys abrufen. Diese werden in einem Format angezeigt, das Sie einfach kopieren und einfügen können.
class
Diese Option ist für ADO.NET-Verbindungen zwingend erforderlich. Beispiele:
class=com.ibm.db2.jcc.DB2Driver |
IBM DB2 über JDBC
class=com.mysql.jdbc.Driver |
MySQL über JDBC
class=System.Data.SqlClient |
SQL Server über ADO.NET
Mit dem Befehl db-drivers können Sie die auf dem lokalen Rechner verfügbaren JDBC-Treiber abrufen. Diese werden in einem Format angezeigt, das Sie einfach kopieren und einfügen können.
sql
Bedingter Parameter. Definiert eine SELECT-Abfrage in der Syntax der aktuellen Datenbank. Die mit der SELECT-Abfrage abgerufene Datensatzgruppe kann als linker oder rechter Bereich des Vergleichs verwendet werden. Wenn Sie diesen Parameter definieren, konfigurieren Sie den Parameter table nicht, da diese beiden Parameter einander gegenseitig ausschließen. Beispiele:
sql="SELECT * FROM employees WHERE a > 5 and b < 6 ORDER BY c" |
SELECT-Abfrage
sql="EXEC dbo.uspGetEmployeeManagers @BusinessEntityID = 50" |
Gespeicherte Prozedur
Wenn Sie eine gespeicherte Prozedur definieren, wird erwartet, dass diese eine Datensatzgruppe und nicht nur Ausgabeparameter zurückgibt.
has-header-row
Optionaler Parameter. Nur bei CSV-Dateien anwendbar. Gültige Werte sind true oder false. Bei true wird die erste Zeile der CSV-Datei als Kopfspalte behandelt und im Vergleich nicht berücksichtigt.
has-header-row=true |