XML zu Tabelle
- 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
| Feld | Beschreibung |
|---|---|
| Host | Adresse der autorisierten externen Datenbank. |
| Port | Port der Verbindung zur externen Datenbank. |
| DB-Name | Name der zu verbindenden Datenbank. |
| Benutzer | Benutzername 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.
- 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.
- 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:
| Feld | Beschreibung |
|---|---|
| Typ | Datentyp des Feldes. Verfügbare Werte: NUMERICO, STRINGA, DATA, DATUM UND UHRZEIT |
| Präzision | Für NUMERICO: maximale Anzahl von Ziffern; für STRINGA: maximale Länge |
| Alias | Der tatsächliche Name der Spalte in der Datenbanktabelle. Dies ist der im DB sichtbare Name. |
| JSONPath-Ausdruck | JSONPath-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äche | Aktion |
|---|---|
| Speichern | Speichert die definierte Struktur |
| Importieren | Importiert eine vorhandene Struktur |
| Exportieren | Exportiert 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:
| Typ | Alias | JSONPath-Ausdruck |
|---|---|---|
| STRINGA | name | $.user.info.name |
| STRINGA | $.user.info.email | |
| NUMERICO | age | $.user.info.age |
| STRINGA | city | $.address.city |
| DATA | registration_date | $.registration.date |
| DATA E ORA | registration_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").
| Typ | Alias | JSONPath-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:
| Typ | Präzision | Alias | JSONPath-Ausdruck |
|---|---|---|---|
| String | 1000 | name | $.name |
| String | 1000 | surname | $.surname |
| String | 4000 | departments | $.departments |
Erklärung:
- Die Spalten name und surname werden direkt abgebildet, da ihre Werte einfache Elemente sind (
<name>,<surname>). - 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. - 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:
| Typ | Präzision | Alias | JSONPath-Ausdruck |
|---|---|---|---|
| String | 1000 | name | $.name |
| String | 1000 | surname | $.surname |
| String | 1000 | department_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
| name | surname | department_names |
|---|---|---|
| Luca | Rossi | Marketing, Sales |
| Maria | Bianchi | HR |
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"
}
}