XML-Datenexport mit KeepTool und Oracle XML DB

Veröffentlicht 03. März 2023

Aktualisiert Oktober 2025


Einführung

Willkommen zurück!
In dieser zweiteiligen Serie zeigen wir, wie Sie KeepTool in Kombination mit Oracle XML DB einsetzen.
Im ersten Artikel haben wir eine funktionierende Import-Schnittstelle für HR.EMPLOYEES erstellt.
In diesem zweiten Teil konzentrieren wir uns auf die Export-Schnittstelle – insbesondere auf die Abbildung einer Master/Detail-Beziehung zwischen HR.COUNTRIES (Master) und HR.LOCATIONS (Detail).
Wie zuvor beschränken wir uns auf das Wesentliche, damit Sie die Logik später flexibel erweitern können.


Erstellung der PL/SQL-Types

Wir möchten Daten aus den Tabellen COUNTRIES und LOCATIONS exportieren. Da zwischen beiden Tabellen eine Foreign-Key-Beziehung besteht, soll das XML-Dokument die Detaildaten (LOCATIONS) verschachtelt innerhalb der Masterdaten (COUNTRIES) enthalten.

Auf der Seite Tables in Hora zeigt die Registerkarte Master/Detail ein kleines Diagramm mit den direkten Beziehungen. Wir haben sowohl COUNTRIES als auch LOCATIONS markiert, um zu verdeutlichen, welche Tabellen in diesem Export-Beispiel verwendet werden

Die beiden zu exportierenden Tabellen COUNTRIES (Master) und LOCATIONS (Detail) haben wir mit einem Stern markiert.

Die beiden zu exportierenden Tabellen COUNTRIES (Master) und LOCATIONS (Detail) haben wir mit einem Stern markiert.

Um den verschachtelten XML-Export zu unterstützen, definieren wir sechs PL/SQL-Typen – je drei pro Tabelle, die voneinander abhängen:

Detailtabelle (LOCATIONS)

  • LOCATIONS_XML_ITEM – Objekttyp, dessen Attribute den Spalten der LOCATIONS-Tabelle entsprechen

  • LOCATIONS_XML_LIST – Collection-Typ (TABLE OF LOCATIONS_XML_ITEM)

  • LOCATIONS_XML_ELEM – Objekttyp, der eine LOCATIONS_XML_LIST enthält und als Wrapper dient

Damit können die Master-Typen später auf Detail-Collections verweisen.

Mastertabelle (COUNTRIES)

  • COUNTRIES_XML_ITEM – Objekttyp, dessen Attribute den Spalten der COUNTRIES-Tabelle entsprechen, plus ein Attribut vom Typ LOCATIONS_XML_ELEM zur Aufnahme der Detaildaten

  • COUNTRIES_XML_LIST – Collection-Typ (TABLE OF COUNTRIES_XML_ITEM)

  • COUNTRIES_XML_ELEM – Objekttyp, der eine COUNTRIES_XML_LIST enthält

Nachdem Sie alle sechs Typen erstellt haben, können Sie diese in Hora auf der Seite PL/SQL Types unter dem Reiter All types anzeigen. Dort erscheinen Objekt- und Collection-Typen gemeinsam in einer Liste.

Für jede zu exportierende Tabelle wurden 3 XML Types erzeugt, welche die XML-Export-Struktur definieren

Für jede zu exportierende Tabelle wurden 3 XML Types erzeugt, welche die XML-Export-Struktur definieren

Hora hebt neu erstellte oder geänderte Typen grün hervor. Mit dem Button „Fade Changes“ in der linken oberen Ecke lässt sich die Einfärbung schrittweise zurücksetzen – nach drei Klicks erscheint wieder der Standardhintergrund. Etwaige Warnungen oder Datenbankfehler werden automatisch eingeblendet.


Erstellen / Registrieren des XSD-Schemas

Im ersten Beitrag haben wir das Paket XML_LOGIC erstellt, das das Schema EMPLOYEES.XSD generiert und registriert. Nun erweitern wir das Paket, um zusätzlich das Schema COUNTRIES.XSD für den Export zu verwalten.

Dazu ergänzen wir zwei Prozeduren:

  • unregister_all_xsds – entfernt alle bestehenden XSDs (einschließlich EMPLOYEES.XSD)

  • register_all_xsds – registriert anschließend sowohl EMPLOYEES als auch COUNTRIES neu

Hora zeigt kürzlich geänderte Objekte mit grünem Hintergrund an, der mit der Zeit bzw. auf Benutzeranforderung verblasst.

Hora zeigt kürzlich geänderte Objekte mit grünem Hintergrund an, der mit der Zeit bzw. auf Benutzeranforderung verblasst.

Ausführung in SQL:

begin
  XML_LOGIC.unregister_all_xsds;
  XML_LOGIC.register_all_xsds;
end;
/

Nach der Ausführung sind beide XSDs in der Datenbank registriert. Auf der XML-Seite in Hora sehen Sie nun:

  • Die Auflistung beider Schemas

Hora zeigt das erzeugte XSD an

Hora zeigt das erzeugte XSD an

  • Auf einem separaten Reiter die Zuordnung zwischen XML-Elementen und PL/SQL-Typen, inklusive der verschachtelten Master/Detail-Struktur
Hora zeigt die Zuordnung von XML Elementen zu PL/SQL Types an

Hora zeigt die Zuordnung von XML Elementen zu PL/SQL Types an

Das neue Schema bildet damit die Hierarchie COUNTRIES → LOCATIONS korrekt ab.


Schnittstellentabelle für den Datenexport

Als Export-Schnittstelle dient die Tabelle XML_COUNTRIES_TRANSFER, aus der externe Systeme die XML-Daten abrufen können.

Datenstruktur zum Speichern des XML-Exports

Datenstruktur zum Speichern des XML-Exports

Wichtige Spalten:

  • ID – Primärschlüssel, automatisch per Trigger / Sequenz gesetzt

  • XML_DATA – CLOB-Spalte mit dem generierten XML-Inhalt

  • Weitere Spalten: Metadaten, Zeitstempel, Statusfelder

Zusätzlich definieren wir die View XML_COUNTRIES_TRANS_DATA_V, die COUNTRIES und LOCATIONS verknüpft und das gewünschte XML-Strukturlayout relational abbildet:

Anlegen einer View, die den hierarchischen XML Export als relationale Struktur anzeigt

Anlegen einer View, die den hierarchischen XML Export als relationale Struktur anzeigt

Diese View liefert hierarchisch strukturierte Daten, die unser Export-Skript anschließend in XML umwandelt und in die Transfer-Tabelle schreibt. Weitere Informationen zur relational-zu-XML-Konvertierung finden Sie beispielsweise im XMLTABLE-Beispiel bei  https://www.oratable.com/xmltable-convert-xml-to-relational-form/ .


Exportlogik in PL/SQL

Im Paket XML_INTERFACE implementieren wir nun eine neue Prozedur für den XML-Export:

  • Sie liest die hierarchischen XML-Daten aus XML_COUNTRIES_TRANS_DATA_V

  • und schreibt diese – zusammen mit Metadaten – in XML_COUNTRIES_TRANSFER

PL/SQL Package, das die gesamte Logik des XML-Exports kapselt

PL/SQL Package, das die gesamte Logik des XML-Exports kapselt

Beispielaufruf:

declare
  XmlCountriesTransferID XML_COUNTRIES_TRANSFER.ID%TYPE;
begin
  XmlCountriesTransferID := XML_INTERFACE.CreateCountriesExport;
end;

Nach dem Einfügen können Sie in Hora die Spalte XML_DATA öffnen und das generierte XML betrachten.

Anzeige des exportierten XMLs in Horas Data Content Browser

Anzeige des exportierten XMLs in Horas Data Content Browser

Externe Systeme können die Daten anschließend direkt aus XML_COUNTRIES_TRANSFER abfragen:

  • XML_DATA enthält das komplette verschachtelte XML

  • Weitere Spalten liefern Informationen wie Zeitstempel und Status


Fazit

Die XML-Export-Schnittstelle ist nun vollständig funktionsfähig. Sie können das Beispiel hier herunterladen und als Vorlage für eigene Master/Detail-Exports verwenden.

In Praxisprojekten berichten Teams von deutlich höherer Produktivität, wenn sie XML-basierte Schnittstellen mit KeepTool und Oracle XML DB umsetzen.


➡️ KeepTool kostenlos testen

Die Oracle-Tools von KeepTool wurden speziell für Entwickler, DBAs und Support-Teams entwickelt.
Basierend auf über 25 Jahren Erfahrung optimieren wir unsere Software kontinuierlich, um Ihre Datenbankanalyse und -dokumentation schneller, effizienter und übersichtlicher zu gestalten.