Einfügen von Daten in eine Tabelle
Mit einem Mapping können Daten aus jeder beliebigen von MapForce unterstützten Quellkomponente (auch aus anderen Datenbanken) in eine Datenbanktabelle eingefügt werden. Sie können flexibel konfigurieren, wie der Primärschlüssel neu eingefügter Datensätze erstellt werden soll. So kann der Primärschlüssel etwa aus dem Mapping stammen, von der Datenbank generiert werden oder anhand vorhandener Schlüsselwerte in der Datenbanktabelle berechnet werden.
In diesem Beispiel wird gezeigt, wie Sie neue Datensätze aus einer XML-Datei in eine vorhandene Datenbanktabelle einfügen. Dabei wird auch festgelegt, wie der Primärschlüssel generiert werden soll. Im Beispiel werden die folgenden Dateien verwendet:
•altova-cmpy.xml - enthält die Quelldaten, die in die Datenbank eingefügt werden sollen
•Altova_Hierarchical.xsd - das Schema, anhand dessen die obige Instanzdatei validiert wird
•Altova.sqlite - die Zieldatenbank, die aktualisiert werden soll
Sie finden all diese Dateien im Ordner <Dokumente>\Altova\MapForce2023\MapForceExamples\. Der vollständige Pfad wurde in der Folge aus Gründen der Einfachheit weggelassen.
Im Mapping in diesem Beispiel wird eine Beispieldatenbankdatei geändert. Es wird empfohlen, eine Sicherungskopie der Originaldatenbank zu erstellen und mit einer neuen Kopie zu arbeiten, bevor Sie die unten stehende Anleitung befolgen. Dadurch stellen Sie sicher, dass die Originaldaten nicht überschrieben werden und Sie dasselbe Ergebnis, wie unten beschrieben, erhalten. Nähere Informationen dazu finden Sie unter Ausführen von Mappings, die Datenbanken modifizieren. |
Ziel des Mappings ist es, Firmen aus der Datei Altova-cmpy.xml als neue Datensätze in die Tabelle "Altova" der Datenbank Altova.sqlite einzufügen. Wenn Sie die XML-Quelldatei öffnen, werden Sie sehen, dass sie nur eine Firma namens "Microtech OrgChart" enthält. Im Mapping muss daher ein neuer Datensatz mit dem Namen "Microtech OrgChart" zur Tabelle "Altova" hinzugefügt werden. Außerdem muss dafür ein neuer Primärschlüssel generiert werden.
Gehen Sie dazu folgendermaßen vor:
Schritt 1: Fügen Sie die XML-Quellkomponente ein
•Klicken Sie im Menü Einfügen auf XML-Schema/Datei und navigieren Sie zur Datei Altova_Hierarchical.xsd. Wenn Sie aufgefordert werden, eine Instanzdatei anzugeben, navigieren Sie zur Datei Altova-cmpy.xml.
Schritt 2: Fügen Sie die Zieldatenbank ein
•Klicken Sie im Menü Einfügen auf Datenbank und befolgen Sie die Anweisungen des Assistenten, um eine Verbindung zu Altova.sqlite herzustellen (siehe Hinzufügen einer Datenbank zum Mapping).
Schritt 3: Ziehen Sie die Verbindungen
•Ziehen Sie die Mapping-Verbindungen wie unten gezeigt.

Anmerkung: | Wenn für untergeordnete Datenelemente automatisch unerwünschte Verbindungen gezogen werden, so ist die Option "Idente Sub-Einträge automatisch verbinden" aktiv. Falls dies der Fall ist, können Sie die letzte Aktion mit der Menüoption Bearbeiten | Rückgängig rückgängig machen. Um die Option zum automatischen Verbinden von Sub-Einträgen zu deaktivieren, klicken Sie auf die Menüoption Verbindung | Idente Sub-Einträge automatisch verbinden. |
Schritt 4: Konfigurieren Sie die Einfügeaktion
1.Beachten Sie in der Zielkomponente die Schaltfläche Aktion: Einfügen ( ). Diese Schaltfläche wird neben jeder Tabelle, die eine Verbindung vom Mapping aufweist, angezeigt (in diesem Fall die Tabelle "Altova"). Klicken Sie auf diese Schaltfläche, um die Einzelheiten der auszuführenden Datenbankaktion (in diesem Fall der Aktion "Einfügen") zu konfigurieren. Daraufhin wird das Dialogfeld "Datenbankaktionen" angezeigt.
2.Wählen Sie im Dialogfeld "Datenbankaktionen" unter Alles einfügen neben PrimaryKey die Option max() + 1.

Die Optionen in dieser Liste haben die folgenden Bedeutung:
Option | Beschreibung |
gemappter Wert | Damit können Quelldaten direkt auf das Datenbankfeld gemappt werden. Dies ist die Standardeinstellung für alle Datenbankfelder. Sie können auch eine gespeicherte Prozedur verwenden, um durch Definition einer Beziehung einen Schlüsselwert bereitzustellen. Siehe dazu Generieren von Schlüsseln mit Hilfe von gespeicherten Prozeduren. |
max() + 1 | Generiert die Schlüsselwerte anhand der vorhandenen Schlüssel in der Datenbank. Wenn die Tabelle z.B. drei Datensätze mit den Primärschlüsseln 1, 2 und 3 hat, so ist max() + 1 gleich 4.
In diesem Beispiel hat die Tabelle "Altova" nur einen Datensatz mit dem Primärschlüssel 1, daher ist max() + 1 gleich 2. Dies ist der erwartete Wert des neuen Primärschlüssels. |
DB-generiert | Zur Generierung der Schlüsselwerte wird von der Datenbank die Identity-Funktion verwendet. |
Die Option gemappter Wert neben "Name" bedeutet, dass diese Spalte den Wert direkt aus dem Mapping erhält. Informationen zu anderen Optionen im Dialogfeld "Datenbankaktionen" finden Sie unter Einstellungen für Datenbankaktionen.
Schritt 5: Vorschau auf das Mapping und Aktualisieren der Datenbank
Klicken Sie auf das Fenster Ausgabe, um eine Vorschau auf das Mapping zu sehen. Es wird ein SQL-Skript generiert, das Aktionen enthält, die an der Datenbank ausgeführt werden sollen. Das Skript hat die Datenbank noch nicht geändert; dies dient nur zur Vorschau.
So führen Sie das Skript an der Datenbank aus:
•Klicken Sie im Menü Ausgabe auf SQL-Script ausführen.
Anmerkung: | Das Ausführen des SQL-Skripts direkt von MapForce aus ist nur eine der Methoden, um eine Datenbank zu aktualisieren. Siehe auch Ausführen von Mappings, die Datenbanken modifizieren. |
Um das Ergebnis zu sehen, öffnen Sie die Datenbank Altova.sqlite in DatabaseSpy oder Access. Beachten Sie, dass ein neuer Datensatz "Microtech OrgChart" mit dem Primärschlüssel 2 zur Tabelle "Altova" hinzugefügt wurde. Die Daten für diesen Datensatz stammen aus der XML-Input-Instanz.

Sie haben nun ein Mapping erstellt, das Daten in eine Datenbanktabelle einfügt. Ein Beispiel für ein Mapping, das Daten sowohl in die aktuelle Tabelle als auch in eine davon abhängige Child-Tabelle einfügt finden Sie unter Einfügen von Daten in mehrere verknüpfte Tabellen.