Gerhard: Gibt es ein Tool "XML to Database via XPATH"?

Hallo,

ich überlege gerade, wie man am sinnvollsten Daten, die man in Form einer XML-Datei erhält, in ein RDBMS (in meinem Fall Oracle) importiert. Ich weiß, dass es in Oracle die Möglichkeit gibt, XML nativ abzulegen und darauf zuzugreifen. Aber ich verfolge gerade einen anderen Denkansatz. Um nicht die ganze Datei in die Datenbank laden zu müssen (ich benötige nur Teile davon), würde ich gerne über eine Desktop-Applikation die gewünschten Daten extrahieren und in vorbereitete Datenbanktabellen einfügen.

Ich hab es mir so vorgestellt: Gegeben sind meine XML-Datei und meine Tabelle(n). Ich konfiguriere das Tool mittels XPATH-Expressions so, dass ich  die Inhalte der Datei auf die richtigen Tabellen/Spalten mappen kann.
D.h. je Tabelle habe ich genau eine XPATH-Expression, die die Anzahl der Entities=Tabellenzeilen bestimmt und dann in der Tabelle wiederum je Spalte eine XPATH-Expression, die dann den Wert der Spalte bestimmt.

Anhand eines Beispiels:

Meine XML-Datei:

  
<file>  
  <aufzaehlung1>  
    <zeile>  
      <spalte1>text</spalte1>  
      <spalte2>text</spalte2>  
      <spalte3>  
        <spalte4>text</spalte4>  
      </spalte3>  
    </zeile>  
    <zeile>  
      <spalte1>text</spalte1>  
      <spalte2>text</spalte2>  
      <spalte3>  
        <spalte4>text</spalte4>  
      </spalte3>  
    </zeile>  
  </aufzaehlung1>  
</file>  

Meine Datenbank-Tabelle trägt den Namen "tabelle_aufzaehlung1" und hat 3 Spalten: "spalte1", "spalte2" und "spalte4".

Ich füttere nun mein Tool mit folgenden Einstellungen:

/file/aufzaehlung1/zeile --> tabelle_aufzaehlung1 //Definiert die Anzahl der Zeilen
/file/aufzaehlung1/zeile/spalte1 --> tabelle_aufzaehlung1.spalte1
/file/aufzaehlung1/zeile/spalte2 --> tabelle_aufzaehlung1.spalte2
/file/aufzaehlung1/zeile/spalte3/spalte4 --> tabelle_aufzaehlung1.spalte4

Am Ende soll die Tabelle 2 neue Zeilen erhalten haben mit den Werten aus spalte1, spalte2 und spalte4 des jeweiligen XML-Entities. Mögliche Fehlerquellen (z.B. dass eine gemappte Spalte keinen simpleType hat sondern weitere Subentities enthält) lass ich hier der Einfachheit halber mal außen vor.

Wer kennt so ein Tool bzw. wer glaubt dass so ein Denkansatz sinnvoll/nicht sinnvoll ist?

Freundliche Grüße,
Gerhard

  1. Hallo,

    warum läßt du das nicht Oracle selbst machen? In der FAQ zum XML Forum ist beschrieben wie das geht.

    Grüße
    Marcus

    --
    si vis pacem, para iustitiam
  2. Hallo Gerhard,

    Ich hab es mir so vorgestellt: Gegeben sind meine XML-Datei und meine Tabelle(n). Ich konfiguriere das Tool mittels XPATH-Expressions so, dass ich  die Inhalte der Datei auf die richtigen Tabellen/Spalten mappen kann.

    Vorschlag: Erzeuge mittels XSLT (<xsl:output method="text" />) zeilenweise passenden SQL-Code, also INSERT INTO

    Grüße,
    Thomas