Einfügen von Daten in eine Tabelle

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Datenquellen und -ziele > Datenbanken und MapForce > Mappen von Daten auf Datenbanken >

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.mdb - die Zieldatenbank, die aktualisiert werden soll

 

Sie finden all diese Dateien im Ordner <Dokumente>\Altova\MapForce2019\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.mdb 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.mdb herzustellen (siehe Beispiel: Hinzufügen der Datenbank "altova.mdb" zum Mapping).

 

Schritt 3: Ziehen Sie die Verbindungen

Ziehen Sie die Mapping-Verbindungen wie unten gezeigt.

mf_db_insert_01

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 ( tbl-act-icon ). 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.

mf_db_insert_03

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 Register 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.

mf_db_insert_04

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.mdb 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.

mf_db_insert_05

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.


© 2019 Altova GmbH