Oracle 10g - XML-Datei aus Repository mit Schema referenzieren, ojektrelational speic

danield24

Grünschnabel
Hallo zusammen,

ich habe ein Problem, wo ich trotz intensiver Suche im Internet und div. Büchern noch keine Lösung gefunden habe.

Ich habe eine Oracle 10g, wo ich im XML-DB-Repository im Public-Ordner eine xml-Datei (Test.xml) abgelegt habe (per WebDAV). Die Test.xml wird im Windows-Explorer auch angezeigt und eine Abfrage mit "select count(*) from xdb.XDB$RESOURCE" zeigt mir auch an, dass ein Datensatz hinzugefügt wurde. Soweit so gut.

Jetzt habe ich in der DB auch einige XML-Schemas registriert, wobei ein Schema (Testschema) zur Test.xml passt. Normalerweise erfolgt die Referenzierung automatisch beim Upload der Datei in das XML-DB-Repository, vorausgesetzt, es ist in der Test.xml ein entsprechender Eintrag "xsi:schemaLocation" enthalten, der auf das richtige Schema verweist. Da das bei meiner Datei nicht der Fall ist, muss ich sie "von Hand" mit dem Schema referenzieren um sie dann anschließend objektrelational zu speichern.
Meine Tabelle, wo die Datei gespeichert werden soll, heißt "bmecatimport_new".

Laut meinen Recherchen müsste es so funktionieren:
insert into "bmecatimport_new"
values (xmltype('hier kommt der XML-Text rein').createschemabasedxml('Testschema'));

Jetzt kommt allerdings der Haken...
Meine XML-Dateien sind z.T. sehr groß (bis 1GB) und enthalten einige Sonderzeichen (z.B. "&") welche bei den SQL-Statements zu Fehlern führen, da sie ja reservierte Zeichen sind.

Daher kann ich die Datei auch nicht als Text in das Statement übergeben, sondern möchte z.B. per Pfad auf die Datei verweisen.

Weiß jemand, wie das geht oder gibt es eine alternative Lösung für das importieren von großen XML-Dateien, die objektrelational mit Schemareferenzierung gespeichert werden sollen?


Vielen Dank im voraus.


MfG
Daniel
 
Zuletzt bearbeitet:
Vielen Dank erstmal für die Antwort. Die Seite hat mich zwar nicht richtig weitergebracht, aber ich bin dadurch schon etwas schlauer geworden.

Ich habe nun eine Tabelle in meiner DB angelegt, die eine Spalte vom Typ "XMLTYPE" enthält und der Tabelle ist ein registriertes Schema zugewiesen. Da ich alles gern nachkontrollieren möchte, wollte ich mal fragen, ob jemand einen SQL-Befehl kennt, mit dem man einfach abfragen kann, ob und zu welchem Schema die Tabelle zugeordnet ist?

Gruß Daniel
 
Zurück