Importieren Sie XML-Dateien in PostgreSQL

8

Ich habe viele XML-Dateien, die ich in die Tabelle xml_data importieren möchte:

%Vor%

Dazu habe ich ein einfaches Bash-Skript mit Schleife:

%Vor%

Dies wird jedoch versuchen, jede Zeile jeder Datei als separate Zeile zu importieren. Dies führt zu einem Fehler:

%Vor%

Ich verstehe, warum es fehlschlägt, kann aber nicht herausfinden, wie \copy die ganze Datei gleichzeitig in eine einzelne Zeile importiert.

    
Tomas Greif 25.09.2013, 14:36
quelle

3 Antworten

8

Ich würde einen anderen Ansatz versuchen: Lies die XML-Datei direkt in eine Variable innerhalb einer plpgsql-Funktion und fahre von dort fort. Sollte viel schneller und viel robuster sein. Sie benötigen jedoch Superuser-Berechtigungen.

%Vor%

Finden Sie ein vollständiges Codebeispiel mit Erklärungen und Links in dieser eng verwandten Antwort:

Erwin Brandstetter 25.09.2013, 19:42
quelle
9

Necromancing: Für diejenigen, die ein funktionierendes Beispiel benötigen:

%Vor%

Oder mit weniger Lärm

%Vor%

Mit dieser XML-Beispieldatei (MyData.xml):

%Vor%

Hinweis:
MyData.xml muss sich in dem PG_Data-Verzeichnis (das Parent-Verzeichnis des Pg_stat-Verzeichnisses) befinden.
z.B. /var/lib/postgresql/9.3/main/MyData.xml
Dies erfordert PostGreSQL 9.1 +

Insgesamt können Sie es dateilos wie folgt erstellen:

%Vor%     
Stefan Steiger 19.10.2015 10:15
quelle
0

Ich habe tr verwendet, um alle Zeilenumbrüche durch Leerzeichen zu ersetzen. Dadurch wird eine XML-Datei mit nur einer Zeile erstellt. Eine solche Datei kann ich einfach mit \copy in eine Zeile importieren.

Offensichtlich ist dies keine gute Idee, wenn Sie mehrzeilige Werte in XML haben. Zum Glück ist das nicht mein Fall.

Um alle XML-Dateien im Ordner zu importieren, können Sie dieses Bash-Skript verwenden:

%Vor%     
Tomas Greif 25.09.2013 18:09
quelle

Tags und Links