Einfacher (bequemer?) Im-/Export von XML

Hallo,

gibt es in PostgreSQL leicht handhabbare Möglichkeiten XML-Dateien in eine Tabellenspalte zu importieren und wieder zu exporiteren?

Ich habe gestern zwar Möglichkeiten gefunden, aber die sind nicht ganz so simpel handhabbar.

Ich hab im Netz eine Variante zum einlesen gefunden:

insert into  testuser.test_xml (data_xml)
select convert_from(testuser.bytea_import('data/test1.xml'), 'utf8')::xml;

die aber superuser-Rechte erfordert.

Zum Expotieren hab ich folgendes genommen:

\copy (select data_text from  testuser.test_xml where id = 8)  TO 'data/xml/out1b.xml'  WITH BINARY;

Was mir allerdings an Anfang und Ende der Datei irgendwelches binäres Zeugs dazuschreibt.

Der Export mit obigem Befehl ohne Binary führt dazu, dass die Zeilenumbrüche und Tabulatoren in \n und \t umgewandelt werden und vom Editor nicht mehr entsprechend umgesetzt werden.

Ein paar Hinweise wären echt nett :slight_smile:

Danke schon mal
Aurelian

Mit psql (oder pgAdmin) ist mir keine Lösung bekannt.

Der SQL Client den ich verwende: http://www.sql-workbench.net kann das. Allerdings nur wegen einer proprietären Erweiterung.

Angenommen die XML Datei liegt auf dem Rechner auf dem der SQL Client läuft, dann kann man z.B. folgendes machen:

insert into  testuser.test_xml (data_xml)
values ({$clobfile=data/test1.xml encoding=utf8});

Wie gesagt: die Datei muss lokal, auf dem Rechner auf dem die Workbench läuft, verfügbar sein.
Da dies einfach als Stream via JDBC übertragen wird, werden dafür keine superuser Rechte benötigt.

Zum Exportieren/Speichern dieser Daten kann man z.B. den (wiederum proprietären) Befehl WbExport oder WbSelectBLOB verwenden.

Beispiele dazu gibt es im Handbuch: http://www.sql-workbench.net/manual/using.html#blob-support bzw: hier http://www.sql-workbench.net/blob_example.html

Nochmal - um Missverständnissen vorzubeugen: diese Lösungen funktionieren ausschliesslich mit der SQL Workbench. Nicht mit psql und nicht mit pgAdmin.