Veröffentlicht 23. Januar 2023
Aktualisiert Oktober 2025
Einführung
In einer neuen zweiteiligen Blogserie zeigen wir Ihnen, wie Sie KeepTool in Verbindung mit Oracle XML DB nutzen können. Wie Sie sich vielleicht erinnern, ermöglicht Oracles Standard-XML-Lösung das Speichern und Abrufen von XML-Dokumenten direkt in der Datenbank. Sie können XML-Schemata registrieren und Abfragen über objekt-relational strukturierte Daten ausführen. Dieser erste Blogeintrag führt Sie in die Grundlagen ein und gipfelt in einer funktionierenden Datenimport-Schnittstelle für die Tabelle HR.EMPLOYEES.
Im nächsten Blog zeigen wir, wie Sie eine Datenexport-Schnittstelle erstellen. Sie lernen, wie man technisch mit Master/Detail-Beziehungen (z. B. HR.DEPARTMENTS und HR.LOCATIONS) umgeht.
Insgesamt konzentrieren wir uns strikt auf die wesentlichen Schritte — Sie haben später noch viel Raum, die Logik an Ihre eigenen Anforderungen anzupassen.
Ein typischer Anwendungsfall
Stellen Sie sich eine regionale Niederlassung eines großen Unternehmens vor. Lokal wird eine eigene Kopie der HR-Datenbank geführt. Die Mitarbeiterdaten werden zentral in der Zentrale verwaltet. Die regionale Stelle erhält Updates zu neuen oder geänderten Mitarbeiterdaten per XML-Schnittstelle:
-
Die Hauptdatenbank sendet periodisch (z. B. nachts oder bei jeder Änderung eines Datensatzes) neue oder modifizierte EMPLOYEES-Daten als XML.
Diese XML-Struktur kann über Web-Services, Remote-Datenbankzugriffe oder andere Mechanismen übertragen werden.
-
Die lokale Seite empfängt die XML-Datenstruktur und importiert sie in die eigene Datenbank.
Neue Datensätze werden eingefügt, bestehende Datensätze aktualisiert.
In Teil 1 unserer Serie zeigen wir, wie eine XML-Struktur importiert werden kann. Die EMPLOYEES-Daten der lokalen HR-Datenbank werden entweder eingefügt oder aktualisiert. Der zweite Blogbeitrag erläutert anschließend, wie der Datenexport technisch umgesetzt wird.
Definition von PL/SQL-Types
Wir orientieren uns an der HR.EMPLOYEES-Tabelle und definieren zuerst PL/SQL-Typen, die Oracle XML DB die Erstellung eines XSD-Schemas ermöglichen:
-
EMPLOYEE_XML_ITEM: ein Objekttyp, dessen Attribute den Spalten der Tabelle entsprechen
-
EMPLOYEES_XML_LIST: ein Collection-Typ, der eine Liste von EMPLOYEE_XML_ITEM darstellt
-
EMPLOYEES_XML_ELEM: ein Objekttyp, der eine Instanz von EMPLOYEES_XML_LIST enthält
(Wir benötigen diese Verschachtelung, um die Collection in ein Wurzel-Element zu kapseln.)
Auf Horas SQL-Seite führen Sie den folgenden Code aus, um diese PL/SQL-Typen zu erzeugen:

Anlegen von 3 PL/SQL Types um die Importstruktur der Tabelle EMPLOYEE zu definieren
Anschließend finden Sie die Typen in Hora unter PL/SQL Types („All types“ Tab). Dort werden Objekttypen und Collection-Typen gemeinsam aufgelistet:

Horas PL/SQL Seite zeigt die 3 Types an
Hora zeigt automatisch Warnungen und Fehlermeldungen des Datenbankservers an.
Erzeugen des XSD-Schemas
Nun verwenden wir dbms_xmlschema.generateschema, um eine XML-Schemabeschreibung zu erzeugen:
select dbms_xmlschema.generateschema( 'HR', 'EMPLOYEES_XML_ELEM', 'EMPLOYEES_LIST') from dual;
Das Ergebnis ist ein CLOB mit dem XSD, den wir anschließend mit dbms_xmlschema.registerschema registrieren:
begin
dbms_xmlschema.registerschema( 'EMPLOYEES.XSD',
dbms_xmlschema.generateschema(
schemaname => 'HR',
typename => 'EMPLOYEES_XML_ELEM',
elementname => 'EMPLOYEES_LIST'),
gentypes => FALSE,
genbean => FALSE,
gentables => FALSE);
end;
Nachdem Sie diesen anonymen Block ausgeführt haben, ist das XSD in der Datenbank registriert. In Hora sehen Sie dann auf der XML-Seite:

Hora zeigt das erzeugte XSD an, dass die Struktur für den XML-Import definiert
- Eine Mapping-Ansicht zwischen XSD-Elementen und PL/SQL-Typen

Hora zeigt die Zuordnung von XML Elements und PL/SQL Types
Zur Vereinfachung haben wir die beschriebenen PL/SQL-Logiken in einem Paket XML_LOGIC gebündelt:

Dieses PL/SQL Package kapselt die gesamte Logik der XSD-Erzeugung sowie das Registrieren des XDSs
Mit diesem Package reicht später ein einfacher Aufruf:
begin
XML_LOGIC.register_xsd( 'EMPLOYEES');
end;
Zusätzlich zur Registrierung in der Datenbank wird die XSD als Datei in einem vordefinierten Oracle-Verzeichnis gespeichert — ideal, um sie an Entwicklerteams weiterzugeben, die XML-Daten importieren wollen.
Schnittstellentabelle für den Datenimport
Zur Verwaltung des XML-Importprozesses definieren wir eine Schnittstellentabelle namens XML_EMPLOYEES_TRANSFER. Externe Systeme fügen ihre XML-Payloads in diese Tabelle ein:

Diese Tabellenstruktur enthält alle Daten für den XML-Import
Wichtige Spalten:
-
ID: Primärschlüssel, gesetzt durch einen Trigger, basierend auf einer Sequenz
-
XML_DATA: CLOB mit dem XML-Dokument
-
Metadata-Spalten: Zeitstempel, Statistikwerte, Fehlerprotokoll
Auf dieser Basis wird eine relationale Sicht erstellt: XML_EMPLOYEES_TRANS_DATA_V, die XML-Daten und Metadaten gemeinsam darstellt:

Diese View bildet die XML-Daten in eine relationale Struktur ab
Diese View verwendet Oracle-Techniken (z. B. XMLTable), um XML-Inhalte in tabellarische Spalten zu zerlegen. Weitere Informationen zur Technik finden Sie z. B. hier: https://www.oratable.com/xmltable-convert-xml-to-relational-form/ .
Logik für den Datenimport
Nun erstellen wir das Paket XML_INTERFACE, das eine Prozedur für den XML-Import enthält. Die Implementierung umfasst folgende Schritte:
-
Iteration über Datensätze in XML_EMPLOYEES_TRANS_DATA_V für eine gegebene Import-ID
-
Für jeden Datensatz:
-
Nach der Verarbeitung: Statistik aktualisieren und Fehlerprotokoll führen

Diese PL/SQL-Procedure kapselt die gesamte Importlogik in ein Package
….
Der Import erfolgt in zwei Schritten:
Darstellung importierter Daten
Nach dem Import können Sie die Ergebnisse direkt in Hora einsehen:

Anzeige der XML-Daten in Horas Data Content Browser
Nach Ausführung der Prozedur zeigt die Datenansicht in Hora den eingefügten Datensatz an:

Horas Data Content Browser zeigt die importierten Daten
Die Zeitstempel der Transfer-Tabelle wurden ebenfalls aktualisiert:

Die Zeitstempel in der Transfertabelle wurden aktualisiert
Die View XML_EMPLOYEES_TRANS_DATA_V ermöglicht es, XML-Inhalt zusammen mit den Spalten der XML_EMPLOYEES_TRANSFER Tabelle in relationaler Form anzuzeigen:

Anzeige der XML-Daten in einer relationalen Struktur
Fazit
Ihre XML-basierte Import-Schnittstelle funktioniert nun! Sie können unser Beispiel als Vorlage herunterladen und für eigene Projekte anpassen.
Bereits in zahlreichen Projekten wurde dieser Ansatz erfolgreich eingesetzt — Entwickler berichten von deutlich gesteigerter Produktivität durch die Verwendung unserer Tools.
Im nächsten Blogbeitrag bauen wir die Export-Schnittstelle, inklusive Master/Detail-Beziehungen, auf.
➡️ 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.