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.