Zum Hauptinhalt springen

XML zu Tabelle

Aktuelle Konfiguration des Tasks XML zu Tabelle im Workflow Designer
  • Aufgabentyp: xml-to-table

Die Aufgabe XML zu Tabelle ermöglicht den Import von Daten aus einer XML-Datei mit tabellarischer Struktur und deren Speicherung in einer Datenbanktabelle. Ihre Funktion ist zweifach: Sie verbindet sich mit einer Datenbank, um die Daten physisch zu schreiben, und stellt gleichzeitig die importierten Daten als Dataset für die Nutzung durch nachfolgende Aufgaben im Workflow bereit (wie ein Iterator). Diese Aufgabe arbeitet mit einem eingehenden XML, das von einer vorhergehenden Aufgabe bereitgestellt wird (z. B. „Text importieren“).

1. Datenbankverbindung

In diesem Tab werden alle Parameter zur Herstellung der Verbindung zur Ziel-Datenbank konfiguriert.

Zieltabelle

Es ist möglich, die Quelle der Anmeldeinformationen für die Verbindung zu definieren:

  • Manuell: Ermöglicht die manuelle Eingabe aller Verbindungsinformationen und Tabellendaten in die folgenden Felder.
  • Umgebung: Ermöglicht die Nutzung einer vorkonfigurierte Verbindung-Umgebung. Durch die Auswahl einer Umgebung werden die Authentifizierungsfelder automatisch ausgefüllt.

Datenbanktyp

Wählen Sie den Datenbanktyp (DBMS) aus, mit dem Sie sich verbinden möchten. Unterstützte Optionen umfassen:

  • PostgreSQL
  • SQL Server
  • MySQL
  • Oracle DB (Bei Oracle kann zwischen SID und SERVICE gewählt werden)
  • SAP HANA

SSL-Verbindung

Geben Sie an, ob die Verbindung zur Datenbank über einen sicheren Kanal erfolgen soll.

Authentifizierung

FeldBeschreibung
HostAdresse der autorisierten externen Datenbank.
PortPort der Verbindung zur externen Datenbank.
DB-NameName der zu verbindenden Datenbank.
BenutzerBenutzername für den Datenbankzugriff.
Passwort setzenÖffnet ein Fenster zur sicheren Eingabe des Passworts.

Tabellenverwaltung

Definiert, wie die Aufgabe mit der physischen Tabelle in der Datenbank interagieren soll.

  1. Zieltabelle: bestimmt die Aktion, die mit der Tabelle ausgeführt wird:
  • Tabelle erstellen: Erstellt immer eine neue Tabelle. Die Operation schlägt fehl, wenn bereits eine Tabelle mit demselben Namen existiert.
  • Tabelle erstellen, falls nicht vorhanden: Erstellt eine neue Tabelle nur, wenn noch keine Tabelle mit demselben Namen existiert.
  • Vorhandene Tabelle: Fügt die Daten in eine bereits vorhandene Tabelle ein. Standardmäßig werden die neuen Daten zu den bereits vorhandenen hinzugefügt (Anhängen). Durch Aktivieren der Checkbox Truncate Insert wird die Tabelle geleert, bevor die neuen Daten eingefügt werden.
  1. Zieltabellennamen: Name der zu erstellenden oder in die Daten zu schreibenden Tabelle (z. B. utenti, prodotti, log_eventi).

2. Tabellenstruktur

Der Tab „Tabellenstruktur“ ermöglicht die Definition der Felder (Spalten) der Tabelle und das Zuordnen jeder Spalte zu den Elementen der ursprünglichen XML-Datei.

Verfügbare Felder

Jede Zeile repräsentiert eine Spalte der Tabelle. Für jedes Feld können folgende Einstellungen vorgenommen werden:

FeldBeschreibung
TypDatentyp des Feldes. Verfügbare Werte: NUMERICO, STRINGA, DATA, DATUM UND UHRZEIT
PräzisionFür NUMERICO: maximale Anzahl von Ziffern; für STRINGA: maximale Länge
AliasDer tatsächliche Name der Spalte in der Datenbanktabelle. Dies ist der im DB sichtbare Name.
JSONPath-AusdruckJSONPath-Ausdruck zum Extrahieren des Werts aus der ursprünglichen XML-Datei (z. B. $.persona.info.name)

Tabellenstruktur verwalten

Unten rechts im Bereich „Tabellenstruktur“ befinden sich drei Schaltflächen:

SchaltflächeAktion
SpeichernSpeichert die definierte Struktur
ImportierenImportiert eine vorhandene Struktur
ExportierenExportiert die definierte Struktur

Diese Funktion ermöglicht es, Mappings zu speichern, zu exportieren oder wiederzuverwenden, wodurch die manuelle Feldkompilierung vermieden und das Fehlerrisiko reduziert wird.

Technischer Hinweis

  • Sichtbarkeit: In diesem System sind gespeicherte Strukturen nur für den erstellenden Benutzer sichtbar.
  • Vertiefung: Für eine detaillierte Beschreibung aller Optionen und der Funktionsweise verweisen Sie auf die Seite Tabellenstruktur.

3. Konfigurationsbeispiel

Um eine Tabelle utenti mit den folgenden Feldern zu erstellen:

TypAliasJSONPath-Ausdruck
STRINGAname$.user.info.name
STRINGAemail$.user.info.email
NUMERICOage$.user.info.age
STRINGAcity$.address.city
DATAregistration_date$.registration.date
DATA E ORAregistration_datetime$.registration.datetime

Das Ergebnis dieser Konfiguration ist die Erstellung einer Datenbanktabelle mit den Spalten name, email, age, city, registration_date und registration_datetime (Alias), die mit den aus dem XML extrahierten Werten (JSONPath-Ausdruck) gefüllt sind.

Alias mit Sonderzeichen oder Großbuchstaben

Wenn Großbuchstaben, Sonderzeichen oder Leerzeichen in den Spaltennamen verwendet werden sollen, muss der Alias in doppelte Anführungszeichen gesetzt werden (z. B. "Vorname").

TypAliasJSONPath-Ausdruck
STRINGA“Name”$.name
STRINGA“Nachname”$.surname

Ergebnis in der Datenbank

4. Verwaltung verschachtelter XML-Strukturen

Der Task XML to Table ist in der Lage, XML-Dateien zu verarbeiten, die verschachtelte Elemente enthalten, d. h. eine Datenhierarchie innerhalb des Hauptdatensatzes. Anstatt die Erstellung separater Tabellen zu verlangen (Normalisierung), kann der Task den gesamten verschachtelten Datenblock in einer einzigen Textspalte serialisieren, typischerweise im JSON-Format.

Praktisches Beispiel

Betrachten Sie die folgende XML-Eingabedatei, wobei jeder <person> eine verschachtelte Liste von <departments> enthält:

<people>
<person>
<name>Luca</name>
<surname>Rossi</surname>
<departments>
<department>Marketing</department>
<department>Sales</department>
</departments>
</person>
<person>
<name>Maria</name>
<surname>Bianchi</surname>
<departments>
<department>HR</department>
</departments>
</person>
...
</people>

Das Ziel ist es, jedes <person> in eine Zeile der Tabelle abzubilden und dabei die Liste der Abteilungen, die jeder Person zugeordnet sind, zu erhalten.

Konfiguration in der „Tabellenstruktur“

Um dieses Ergebnis zu erzielen, lautet die Konfiguration im Tab „Tabellenstruktur“ wie folgt:

TypPräzisionAliasJSONPath-Ausdruck
String1000name$.name
String1000surname$.surname
String4000departments$.departments

Erklärung:

  1. Die Spalten name und surname werden direkt abgebildet, da ihre Werte einfache Elemente sind (<name>, <surname>).
  2. Für die Spalte departments ist die Ausdruck auf departments eingestellt. Dies weist die Aufgabe an, nicht nach einem einzelnen Wert zu suchen, sondern den gesamten Inhalt des Tags <departments> für jede Person zu erfassen.
  3. Die Aufgabe konvertiert diesen XML-Fragment automatisch in sein JSON-Äquivalent, bevor es in die Datenbankspalte eingefügt wird.

Ergebnis in der Datenbank

Durch Anwendung dieser Konfiguration erzeugt die Aufgabe eine Tabelle, in der die Spalte departments einen JSON-String enthält, der die ursprüngliche verschachtelte Struktur darstellt. Dies ermöglicht die Beibehaltung aller hierarchischen Informationen in einem einzigen Textfeld, das für die spätere Analyse durch andere Tools oder Aufgaben bereitsteht.

Extraktion von Unterelementen mit JSONPath

Wenn stattdessen einzelne verschachtelte Elemente extrahiert werden sollen, wie beispielsweise die Namen der Abteilungen, kann ein spezifischer JSONPath-Ausdruck verwendet werden. Zum Beispiel:

TypPräzisionAliasJSONPath-Ausdruck
String1000name$.name
String1000surname$.surname
String1000department_names$.departments.department[*].details.name

Mit dieser Konfiguration wählt die Aufgabe XML to Table alle name Werte aus dem Array department aus und fügt sie in die Spalte department_names der Datenbank ein, wobei sie optional durch ein Komma getrennt werden.

Ergebnis in der Datenbank

namesurnamedepartment_names
LucaRossiMarketing, Sales
MariaBianchiHR

Dieser Ansatz ermöglicht die Extraktion nur der benötigten Daten, ohne den gesamten JSON-Block zu serialisieren, wodurch die Tabelle leichter abfragbar und in anderen Aufgaben oder Berichten nutzbar wird.

5. Ausgabe-Parameter

Sobald die Aufgabe XML to Table die Verarbeitung abgeschlossen hat, stellt sie einen reichhaltigen Satz von Ausgabe-Parameter bereit. Diese Parameter liefern nicht nur Informationen über den Erfolg der Operation, sondern stellen auch die verarbeiteten Daten in verschiedenen Formaten für nachfolgende Aufgaben zur Verfügung.

  • result: Gibt den allgemeinen Status der Aufgaben-Ausführung zurück (z. B. "Success" oder eine Fehlermeldung).
  • targetTable: Gibt den Namen der Datenbanktabelle zurück, in die die Daten eingefügt wurden.
  • rowCount: Gibt die Gesamtzahl der Zeilen an, die in die Zieltabelle eingefügt wurden.
  • DataExportCsv: Gibt den gesamten verarbeiteten Datensatz zurück, formatiert als Text im CSV-Format (Comma-Separated Values).
  • DataExportJson: Gibt den gesamten verarbeiteten Datensatz zurück, formatiert als JSON-String.
  • Dataset: Dieser Parameter repräsentiert den Namen der Spalte der Tabelle (z. B.: name). Er ist der wichtigste Parameter, um diese Aufgabe mit einem Iterator zu verknüpfen. Um auf die Werte einer bestimmten Spalte während einer Iteration zuzugreifen, wird die Syntax Dataset.Spaltenname verwendet.
  • DataColumn: Dieser Parameter ermöglicht den Zugriff auf den gesamten Inhalt einer Spalte als einzelne Einheit (z. B. ein Array oder eine Liste).
  • DataColumn.Spaltenname: Gibt alle Werte der Spalte „Spaltenname“ zurück. Z. B.: „Luca, Maria, Giovanni, Elena“
  • resultJson: repräsentiert das Ergebnis der Aufgaben-Ausführung im JSON-Format und enthält allgemeine Informationen, Konfigurationen und Details zur Ausführung.

6. Beispiel-Parameter resultJson

{
"run_info": {
"status": "Completed",
"run_result": "Success"
},
"output_parameters": {
"exitStatus": "0"
}
}