Datenbankaktionen: Einstellungen
Wenn Sie Daten auf eine Datenbanktabelle mappen, wird neben der Tabelle die Schaltfläche Datenbankaktionen angezeigt. In der Abbildung unten sehen Sie, dass XML-Daten auf zwei Datenbanktabellen gemappt werden und jede Tabelle ihre eigene Datenbankaktionen-Schaltfläche hat (unten rot umrandet).
Bei Klick auf die Schaltfläche Datenbankaktionen wird das Dialogfeld Datenbankaktionen angezeigt (siehe unten). Hier können Sie verschiedene Einstellungen, Aktionen und Optionen konfigurieren. Das Dialogfeld Datenbankaktionen besteht aus fünf Bereichen:
1.Vor dem ersten Datensatz auszuführende Aktionen
2.Für jeden Datensatz auszuführende Aktionen
3.Datenbanktransaktionseinstellungen
4.Ablaufverfolgungs- und Fehlerprotokollierungseinstellungen
5.Bulk Transfer-Einstellungen
Nähere Informationen über die einzelnen Bereiche des Dialogfelds finden Sie in den Unterabschnitten weiter unten.
Vor dem ersten Datensatz auszuführende SQL-Anweisung
In diesem Abschnitt können Sie SQL-Anweisungen definieren, die vor Aktionen, die im Abschnitt Für jeden Datensatz auszuführende Aktionen definiert sind, ausgeführt werden. Es stehen die folgenden Optionen zur Verfügung:
•Die Option Keine bedeutet, dass keine Aktion ausgeführt wird. Dies ist die Standardeinstellung.
•Die Option Alle Datensätze LÖSCHEN bedeutet, dass alle Datensätze aus der ausgewählten Tabelle gelöscht werden. Zusätzlich dazu können Sie festlegen, dass auch alle Datensätze in allen Child-Tabellen gelöscht werden sollen (Kontrollkästchen auch alle Datensätze in Child-Tabellen löschen).
•Über die Einstellung Benutzerdefinierte SQL können Sie eine benutzerdefinierte SQL-Anweisung erstellen, die sich auf die gesamte Tabelle auswirkt. So können Sie z.B. eine Anweisung hinzufügen, die Änderungsverfolgungsinformationen über ein Mapping liefert. Beachten Sie, dass die Unterstützung mehrerer SQL-Anweisungen in einer einzigen Abfrage von der Datenbank, der Verbindungsmethode und dem verwendeten Treiber abhängt.
Nähere Informationen zu diesen Aktionen finden Sie unter Datenbankaktionen:. Szenarien.
Für jeden Datensatz auszuführende Aktionen
Im Abschnitt Für jeden Datensatz auszuführende Aktionen können Sie Datenbankaktionen definieren, die für die einzelnen Datensätze in Ihrer Datenbank ausgeführt werden sollen. Um Tabellenaktionen zu verwalten, klicken Sie auf die Schaltfläche Aktion anhängen, Aktion einfügen oder Aktion löschen. Falls erforderlich, können auch mehrere Aktionen definiert werden. Datenbankaktionen, die nach Alles einfügen oder Rest einfügen definiert sind, werden nie ausgeführt, da die darauf folgenden Bedingungen nicht erfüllt werden können. Wenn Sie nach der Aktion Alles einfügen oder Rest einfügen eine Tabellenaktion hinzugefügt haben, werden Sie in einem Dialogfeld darüber informiert, dass die darauf folgende Tabellenaktion gelöscht wird.
Für jede Aktion werden alle Input-Daten mit den Datenbankdaten verglichen. Wenn alle Vergleiche "true" ergeben, wird eine bestimmte Aktion durchgeführt. Die definierten Tabellenaktionen werden von links nach rechts verarbeitet. Wenn Sie z.B. eine Aktualisieren, wenn-Bedingung und anschließend eine Rest einfügen-Bedingung definiert haben, wird zuerst die Aktualisieren, wenn-Aktion verarbeitet. Wenn die Aktualisieren, wenn-Bedingung nicht erfüllt wird, wird die Aktion Rest einfügen durchgeführt. Wenn keine der Bedingungen erfüllt wird, wird keine Aktion durchgeführt.
Gemappter Wert/DB-generiert/max() + 1
Wenn Sie die Aktion Alles einfügen oder Rest einfügen konfigurieren, können Sie festlegen, wie Werte generiert werden sollen. Es stehen die folgenden Optionen zur Verfügung: gemappter Wert, DB-generiert und max() + 1. Die Option gemappter Wert bedeutet, dass Quelldaten direkt auf das Datenbankfeld gemappt werden. Die Option gemappter Wert ist die Standardeinstellung für die meisten Datenbankfelder.
Wenn für den/die Primärschlüssel in Ihrer Datenbank eine Autoinkrementierung definiert wurde, können Sie zwischen einem gemappten Wert und einem DB-generierten Wert auswählen. Wenn keine Autoinkrementierung definiert ist, haben Sie die Wahl zwischen einem gemappten Wert und der Option max() + 1. Mit der Option max() + 1 werden auf Basis der bestehenden Werte in der Datenbank numerische Werte generiert. Wenn eine Tabelle z.B. drei Datensätze mit den Primärschlüsseln 1, 2 und 3 hat, lautet der Primärschlüssel eines neuen Datensatzes 4.
NULL gleich
Wenn Sie das Kontrollkästchen NULL gleich neben einem Datensatz aktivieren (Abbildung unten), werden Nullwerte im Quelldatensatz und Nullwerte im Zieldatensatz als gleich behandelt Wenn Sie dieses Kontrollkästchen nicht aktivieren, kann dies zu fehlerhaften Ergebnissen führen. Das Kontrollkästchen NULL gleich kann verwendet werden, wenn alle der folgenden Bedingungen zutreffen:
•Das Feld, für das Sie die Option NULL gleich aktivieren möchten, kann auf Null gesetzt werden, d.h. dieses Feld wurde so konfiguriert, dass es NULL-Werte haben darf.
•Es wurden eine oder mehrere der folgenden Aktionen konfiguriert: Ignorieren, wenn..., Aktualisieren, wenn... oder Löschen, wenn....
•Eine oder mehrere Tabellenaktionen (z.B. Ignorieren, wenn...) hat mindestens eine gleich- oder gleich (Groß/Kleinschreibung ignorieren)-Bedingung (siehe Feld "Author" in der Abbildung unten).
In der Abbildung oben sehen Sie, dass für die Tabelle Authors zwei Aktionen definiert wurden: Ignorieren, wenn... und Rest einfügen. Die Ignorieren, wenn...-Bedingung vergleicht die Author- und Website-Werte in der Quellkomponente mit den Author- und Website-Werten in der Datenbank. Wenn diese Werte identisch sind, werden diese Datensätze in der Datenbank ignoriert und die Datensätze aus der Quellkomponente, die kein Pendant in der Datenbank haben, werden einfach in die Datenbank eingefügt.
Die Option NULL gleich wurde für die Spalte Website aktiviert. So hat etwa einer der Author-Datensätze im Feld Website in der Quell- und Zielkomponente einen Nullwert. Wenn die Option NULL gleich aktiviert ist, wird dieser Author-Datensatz ignoriert und nicht in die Datenbank eingefügt. Wenn das Kontrollkästchen NULL gleich jedoch nicht aktiviert ist, erfüllt der Datensatz die Ignorieren, wenn...-Bedingung nicht mehr und wird in die Datenbank eingefügt.
Child-Tabellen
Wenn in Ihrer Datenbank eine Sekundärschlüsselbeziehung vorhanden ist, sehen Sie in Dialogfeld Datenbankaktionen die Namen von Child-Tabellen (Im Dialogfeld "Datenbankaktionen" oben "Books") und es stehen die folgenden Optionen zur Verfügung:
•Daten in Child-Tabellen löschen: Diese Option ist vor allem dann sinnvoll, wenn Sie z.B. die Aktion Aktualisieren, wenn für eine Parent-Tabelle und die Aktion Alles einfügen für eine Child-Tabelle auswählen. Die Bedingung Aktualisieren, wenn aktualisiert nur diejenigen Parent-Datensätze, die sowohl in der Quellkomponente als auch in der Datenbank vorhanden sind. Mit Hilfe der Bedingung Akualisieren, wenn verhindern Sie, dass Sie Duplikate in der Parent-Tabelle erhalten.
Mit der Option Daten in Child-Tabellen löschen werden nur diejenigen Book-Datensätze gelöscht, deren Parent-Datensätze (Authors) die Aktualisieren, wenn...-Bedingung erfüllen (d.h. solche, die sowohl in der Quelldatei als auch in der Datenbank vorhanden sind). Durch Löschung der Child-Datensätze verhindern Sie, dass Sie Duplikate oder verwaiste Daten in der Child-Tabelle erhalten. Mit der für die Child-Tabelle definierten Aktion Alles einfügen werden nur diejenigen Child-Datensätze aus der Quelldatei eingefügt, deren Parent-Datensätze die Aktualisieren, wenn...-Bedingung erfüllen.
•Input-Child-Daten ignorieren: Verwenden Sie diese Option, wenn Sie nur die Parent-Tabelle aktualisieren möchten und alle ihre Child-Datensätze unverändert bleiben sollen.
Datenbanktransaktionsbehandlung
Im Abschnitt Datenbanktransaktionsbehandlung können Sie ein Rollback einer Operation oder Reihe von Operationen (Transaktion) durchführen, falls ein Fehler im Zusammenhang mit der Datenbank aufgetreten ist (z.B. wenn NULL-Werte in Nicht-NULL-Spalten eingefügt werden). Damit die Transaktionen auf Tabellenaktionsebene durchgeführt werden, aktivieren Sie im Dialogfeld Datenbankaktionen das Kontrollkästchen Transaktionen verwenden (Abbildung unten).
Die folgenden Transaktionsbehandlungsoptionen stehen zur Verfügung:
•Rollback für oberste Transaktion und beenden: Da die Transaktionsbehandlung auf verschiedenen Ebenen der Datenbankhierarchie konfiguriert werden kann, kann sich die oberste Transaktion auf (i) die Transaktion auf Ebene der Datenbankkomponente beziehen, wenn Sie Transaktionen auf dieser Ebene aktiviert haben oder (ii) auf die in der obersten Tabelle definierte Transaktion. Die an der Datenbank vorgenommenen Änderungen werden für jede Ebene der Hierarchie bis hinauf zur obersten Ebene rückgängig gemacht und anschließend wird die Ausführung abgebrochen.
•Rollback für oberste Transaktion und fortfahren: Wie oben, doch wird die Ausführung des Mappings nach dem Rollback fortgesetzt (z.B., um eine zweite Zielkomponente, falls vorhanden, zu verarbeiten).
•Rollback für aktuelle Transaktion und beenden: Wenn im Zusammenhang mit der Datenbank ein Fehler auftritt, werden nur die in die aktuelle Transaktion eingeschlossenen Änderungen rückgängig gemacht und die Verarbeitung nachfolgender Datensätze wird abgebrochen. Zuvor außerhalb der aktuellen Transaktion vorgenommene Änderungen werden in die Datenbank übernommen.
•Rollback für aktuelle Transaktion und fortfahren: Wie oben, doch wird das Mapping nach Ausführung des Rollbacks weiter ausgeführt.
Nähere Informationen zu verschiedenen Transaktionsbehandlungsszenarien finden Sie unter Transaktions-Rollback: Szenarien.
Ablaufverfolgungen
Wenn bei einem Mapping Daten in eine Datenbank geschrieben werden, haben Sie die Möglichkeit, die Datenbankablaufverfolgung und Fehlerprotokollierung zu aktivieren. Die Ablaufverfolgung ist nützlich, wenn Sie aufzeichnen möchten, welche Änderungen während der Ausführung des Mappings an der Datenbank vorgenommen wurden. Die an der Datenbank vorgenommenen Änderungen werden in einem Ablaufverfolgungsbericht protokolliert. Etwaige während der Ausführung aufgetretene Fehler werden ebenfalls protokolliert.
Nähere Informationen zur Struktur eines Ablaufverfolgungsberichts Sie unter Ablaufverfolgungsdatei. Ein Beispiel mit aktivierter Ablaufverfolgung finden Sie unter Transaktions-Rollback: Szenarien im Szenario 1.
Um die Ablaufverfolgung auf Tabellenebene zu aktivieren, gehen Sie folgendermaßen vor:
1.Stellen Sie sicher, dass die Ablaufverfolgungsebene auf Ebene der Datenbankkomponente auf Immer oder Fehler gesetzt ist.
2.Klicken Sie neben der Tabelle, für die Sie die Ablaufverfolgung aktivieren möchten, auf die Schaltfläche für die Tabellenaktion.
3.Wählen Sie im Abschnitt Ablaufverfolgungen des Dialogfelds Datenbankaktionen eine der folgenden Ablaufverfolgungsebenen aus (Abbildung unten): (i) mit Immer deaktiviert wird für diese Tabelle keine Ablaufverfolgung durchgeführt; (ii) mit der Option Auf Fehler einschränken wird die Ablaufverfolgung auf Fehlerereignisse eingeschränkt; (iii) mit der Option Komponenteneinstellungen verwenden werden die auf Komponentenebene definierten Einstellungen übernommen.
Ablaufverfolgung auf Ebene von Datenbankfeldern
Wenn Sie die Ablaufverfolgung auf der Ebene von Datenbankkomponenten und Tabellen aktivieren, werden standardmäßig alle Felder (Datenbankspalten) in den Ablaufverfolgungsbericht inkludiert (Abbildung unten). Wenn der Ablaufverfolgungsbericht nur Informationen über bestimmte Datenbankfelder enthalten soll, aktivieren Sie im Dialogfeld Datenbankaktionen die Schaltfläche Felder. Sie können Felder wahlweise ausblenden, in jedem Fall oder nur im Fall eines Fehlers inkludieren.
Bulk Transfer verwenden
Die Option Bulk Transfer verwenden bedeutet, dass mehrere INSERT-Anweisungen als eine einzige Abfrage ausgeführt werden. Auf diese Art können Sie das Einfügen von Daten enorm beschleunigen, da nur eine Anweisung anstatt mehrerer ausgeführt werden muss. Die Option Bulk Transfer verwenden wird in MapForce konfiguriert, doch der eigentliche Bulk-Transfer von Daten erfolgt, wenn das Mapping von MapForce Server ausgeführt wird.
Voraussetzungen
Die Option "Bulk Transfer" wird unter folgenden Bedingungen unterstützt:
•Als Mapping-Transformationssprache muss Built-in definiert sein.
•Das Mapping wird von MapForce Server ausgeführt (entweder Standalone oder unter FlowForce Server-Verwaltung).
•Die MapForce Server-Lizenz ist auf einem Mehrkernrechner nicht auf "Single Thread-Ausführung" eingeschränkt, d.h. die Option Limit to single thread execution auf dem Register "Server Management" von Altova LicenseServer muss deaktiviert sein.
•Für die entsprechende Datenbanktabelle ist die Aktion Alles einfügen definiert.
•Die Tabelle, in die die Daten im Bulk eingefügt werden sollen, darf keine verknüpften Tabellen, Ansichten oder gespeicherten Prozeduren haben, die die Tabelle im Mapping referenzieren.
•Der Datenbanktreiber unterstützt Bulk-Einfügungsoperationen bei WHERE-Bedingungen.
Die Unterstützung für die Bulk-Einfügunsoperation hängt vom Datenbanktyp und -treiber ab (Tabelle unten).
DB-Typ | ADO | ODBC | JDBC | ADO.NET | Nativ |
---|---|---|---|---|---|
Access | Nein | Nein | n/a | n/a | n/a |
DB2 | Nein | Ja | Ja | Ja | n/a |
Firebird | n/a | Ja | Ja | Nein | n/a |
Informix | Nein | Ja | Ja | Ja | n/a |
iSeries | Nein | Ja | Ja | Ja | n/a |
MariaDB | Nein | Ja | Ja | Nein | n/a |
MySQL | n/a | Ja (MySQL Version 5 oder höher erforderlich) | Ja | Nein | n/a |
Oracle | Nein | Ja | Ja | Ja | n/a |
PostgreSQL | n/a | Ja | Ja | n/a | Ja |
Progress | n/a | Ja | Ja | n/a | n/a |
SQL Server | Ja | Ja | Ja | Ja | n/a |
SQLite | n/a | n/a | n/a | n/a | Nein |
Sybase | Nein | Ja | Ja | n/a | n/a |
Teradata | n/a | Ja | Ja | n/a | n/a |
Anmerkung: | Die Unterstützung für die Bulk-Einfügung für MySQL und MariaDB über JDBC können Sie mit Hilfe der Verbindungsoption rewriteBatchedStatements=true aktivieren. |
Beispieldatenbank
Sie können die Bulk-Einfügungsoperation mit Hilfe von SQL Server und der Datenbank AdventureWorks testen. Wenn Sie diese Datenbank in Ihr Mapping laden und das Dialogfeld Datenbankaktionen öffnen, können Sie die Stapelgröße definieren (1000 Datensätze in unserem Beispiel). Mit der Stapelgröße wird die Anzahl der Datensätze definiert, die auf einmal eingefügt werden können. Beachten Sie, dass einander die Optionen Bulk Transfer verwenden und Transaktionen verwenden gegenseitig ausschließen: Wenn eine dieser Optionen aktiviert ist, wird die andere Option deaktiviert.
Nächster Schritt
Nachdem Sie die Bulk-Einfügung nun aktiviert haben, ist der nächste Schritt die Ausführung des Mappings mit MapForce Server (entweder Standalone Edition oder unter Verwaltung von FlowForce Server).