MapForce unterstützt SQL-Merge-Operationen, wenn dies das geeignete Werkzeug für die jeweilige Aufgabe ist

Große Datenbanktabellen können problemlos Millionen, manchmal sogar Hunderte von Millionen von Datensätzen enthalten. Datenbankadministratoren und andere, die für die Pflege solcher großen Datensätze verantwortlich sind, sind stets besorgt über die Ausführungszeit von ETL-Operationen (Extrahieren, Transformieren und Laden), Aktualisierungen und anderen SQL-Abfragen. Um diese Operationen effizienter zu gestalten, haben einige – aber nicht alle – Datenbankanbieter eine SQL-MERGE-Anweisung implementiert, mit der Zeilen in eine bestehende Tabelle eingefügt oder aktualisiert werden können, und zwar als eine einzige Massenoperation, anstatt einzelne Anweisungen für jede Zeile zu benötigen.

Altova MapForce unterstützt automatisch das Zusammenführen von Daten (SQL Merge), sofern diese Funktion für die Ziel-Datenbank verfügbar ist. Betrachten wir ein Beispiel.

Einfügen vs. Aktualisieren – Wenn..

Das folgende Bild veranschaulicht eine Datenzuordnung, bei der Elemente einer XML-Datei auf eine Datenbanktabelle abgebildet werden.

Standardmäßig generiert MapForce für jedes "Person"-Element in der Quelldatei eine SQL-Einfügeanweisung. Dies ist gut geeignet, um Zeilen in einer neuen, leeren Datenbanktabelle zu befüllen. In anderen Situationen, wie beispielsweise bei der Synchronisierung einer Sicherungskopie mit einem aktuellen Datensatz, sind Einfügeanweisungen jedoch nicht geeignet. MapForce ermöglicht es Ihnen bequem, die korrekte SQL-Operation anzugeben, die für jede Datenbankzuordnung erforderlich ist.

Klicken Sie einfach auf das Aktionssymbol neben der gewünschten Datenbanktabelle, die im obigen Beispiel die Tabelle "Person" ist, um den Dialog "Aktionen für Datenbanktabellen in MapForce" zu öffnen. Der Screenshot unten zeigt die Dropdown-Funktion, mit der Sie die SQL-Einfügeanweisung in eine "Update-wenn"-Anweisung ändern können.

Aktualisierung: Wenn eine Aktualisierung durchgeführt werden soll, muss eine Bedingung festgelegt werden. In dieser Zuordnung möchten wir Datensätze in der Datenbank aktualisieren, bei denen die Quelldaten einen bereits vorhandenen Primärschlüssel enthalten. Außerdem möchten wir eine neue Zeile einfügen, wenn der Primärschlüssel in den Quelldaten noch nicht in der Datenbank vorhanden ist.

Dies wird üblicherweise als eine "Update, wenn... dann..."-Operation bezeichnet.

Der Dialog "Aktionen für Datenbanktabellen" ermöglicht es uns, die Bedingung festzulegen, die für eine Aktualisierung geprüft werden soll, und eine alternative Aktion auszuführen, wenn diese Bedingung nicht erfüllt ist. Der vollständige Satz von Aktionen, der "Aktualisieren, wenn...ansonsten Einfügen" definiert, wird hier angezeigt:

Aktualisierung vs. Massenimport

Bisher haben wir noch nicht einmal den Anbieter der Datenbank für die Zieltabelle unserer Zuordnung erwähnt. Das liegt daran, dass die Zuordnung auf die gleiche Weise für alle gängigen Datenbanken definiert ist, die von MapForce unterstützt werden. Wir müssen nichts anders machen, unabhängig davon, ob die Zieldatenbank SQL-Merge unterstützt oder nicht.

Wenn wir auf den Reiter "MapForce-Ausgabe" unterhalb des Datenbank-Mappings-Designs klicken, generiert MapForce ein SQL-Skript, das speziell für den jeweiligen Datenbanktyp angepasst ist. Dieses Skript wird dann zur Überprüfung im MapForce-Ausgabefenster angezeigt. Es wird NICHT automatisch ausgeführt.

Wenn die Zieldatenbank SQL Merge unterstützt, finden Sie eine MERGE-Anweisung im oberen Teil des Skripts.

Wenn die Ziel-Datenbank SQL Merge nicht unterstützt, werden Sie für jede Zeile der Quelldaten einzelne UPDATE-Anweisungen mit entsprechenden WHERE-Klauseln angezeigt.

Sie können das Skript direkt in MapForce ausführen, indem Sie die Option "SQL-Skript ausführen" im Menü "MapForce-Ausgabe" auswählen. Alternativ können Sie die Zuordnung als Ausführungsdatei speichern und sie in MapForce Server automatisieren, wobei die Namen der Eingabedateien zur Laufzeit angegeben werden.

Wenn die Zieldatenbank SQL Merge unterstützt, werden Merge-Anweisungen generiert, unabhängig davon, ob die Zuordnung direkt von MapForce ausgeführt oder über MapForce Server automatisiert wird. MapForce 2017 unterstützt SQL Merge-Anweisungen für SQL Server 2008 und neueren Versionen, Oracle, IBM DB2 und Firebird.

Tests, die wir hier bei Altova durchgeführt haben, zeigen, dass die Massenverarbeitung von SQL-Merge-Operationen durch den MapForce Server bis zu 15-mal effizienter sein kann als bei bisherigen Methoden.*

*Hinweis: Die tatsächliche Leistungssteigerung kann je nach Konfiguration und Datenmenge variieren

Hier klicken für weitere Informationen zum Thema Datenbankabbildung mit MapForce, einschließlich einer vollständigen Liste der unterstützten Datenbanken, die als Datenquellen oder -ziele für die Abbildung verwendet werden können. Oder hier klicken, um eine kostenlose, voll funktionsfähige 30-Tage-Testversion herunterzuladen. Die Dateien, die in diesem Blogbeitrag für die Abbildung verwendet werden, sind als MapForce-Beispiele verfügbar. Detaillierte Anleitungen zur Wiederherstellung der Abbildung finden Sie in der integrierten MapForce-Hilfe.

  • Die Leistungsdaten basieren auf internen Tests von Altova. Ihre Ergebnisse können abweichen.