XML-Data to Postgres

Hey All,

ich habe ein Verzeichnis mit ca. 8000 XML-Files.

Ist PostgreSQL für XML-Daten geeignet oder sollte ich eine spezielle XML-Datenbanke verwenden.

Wie kann ich die 8000 XML-Files importieren??

Vielen Dank
Ronny

https://www.postgresql.org/docs/current/static/functions-xml.html

Erstmal Dankeschön für die Antwort.


Ich bin mir nicht ganz sicher welches von den beiden das Richtige ist. Darum möchte ich einmal erläutern wie die Dateien miteinander funktionieren und was ich vorhabe. In den Dateien stehen Daten von Autos und ich würde halt gerne die richtigen Passagen aus den Dateien abrufen lassen.


Schritt 1

Die erste Datei ist ein normales Textdokument in simpler Tabellenform in diesem kann man sich das Auto anhand seiner Grunddaten auswählen.
Wir nehmen zum Beispiel einen Mercedes E200 Kompressor.
Folgende Zeile haben wir dann für dieses Fahrzeug.

0264@201@E200/K-150KW@MB E200/K (725I,A) M@150@2797@19960404@1@MB00423
HSN TSN TYP

Um das Auto in der nächsten Datei zu finden brauchen wir das Ende der Zeile ’’MB00423’’

Schritt 2

Nun gehen wir in eine XML-Datei in welcher eine Menge Autos angelegt sind.
Wir suchen in dieser Datei nach ’’MB00423’’
Folgender Abschnitt ist für dieses Auto dann zu finden.

2073 MBSG0000052 MBSG0000053 mb1ser mb1imm 8943 8944 \ \ Um in die nächste Datei zu kommen benötigen wir die Zahlen unter WAM. In diesem Beispiel haben wir 2 zur Verfügung. Die Zahlen ’’237’’ und ’’785’’ sind Kennungen welche in einer anderen Datei geschrieben sind. Hier sagen sie folgendes aus, ’’237’’ steht für Baujahr bis Ende 1994 und ’’785’’ steht für Baujahr ab 1995, also benutzen wir für dieses Auto die ID ’’8944’’.

Nun haben wir einen Ordner in dem Tausende von XML-Dateien sind, für jedes Auto eine eigene.
Um zu unserem gewählten Mercedes zu kommen gibt man in die Suche ’’08944’’ ein (eine Null muss manuell vorgesetzt werden) und öffnet diese Datei namens ’’08944.xml’’ mit folgendem Inhalt.

8944 E 200 K (1995-) 2797 1490/1460 89 Nm 89 Nm 0,87N - 0,87P 0°8´N - 0°8´P 0,19N - 0,19P 0°36´N - 0°6´P 0,80N - 0,15P 0°7´ - 1°7´ 0,14 - 1,14 o 0±0,60 0°±5´ 0±0,33 0°45´N±41´ 0,35N±0,45 $D51 0°37´±20´ 0,72±0,40 $D58 12°30´±40´ 12,40±0,20 12°15´ 12,25 37° 37 33°46´ 33,77 5,25±1,75 0°45´±25´ 0,75±0,42 $D51 0°30´N±30´ 0,30N±0,70 $D51

Nun hat man alle nötigen Werte von dem Fahrzeug erhalten.

Ich hoffe die Erläuterung kann weiterhelfen um mir weiterzuhelfen.

Vielen Dank
Ronny

Das ist eine Beschreibung des Status Quo? (Eines Ablaufs in einer bestehenden Anwendung?)
Oder ein Beispiel für einen manuellen Suchlauf über die “nackten” Dateien, um die Zusammenhänge zu zeigen?

So oder so, ich könnte mir das in einem relationalen Datenmodell angenehmer und schneller vorstellen.
Was Dein Beispiel nicht sagt, wie variantenreich diese XML sind, wo sie herkommen, wie oft sie sich ändern, …
Alles Aspekte, die man bei einer Umstellung berücksichtigen sollte.

Hallo,

das war ein Beispiel für einen manuellen Suchlauf um zu zeigen wie die Daten verknüpft.
Varianten sind entweder nur eine oder gar keine enthalten. Geändert/erweitert werden die Daten einmal im Jahr.
Die Daten werden uns per Zip.Datei übermittelt in verschiedenen Ordnern, die Struktur bleibt immer gleich in den
Dateien.

Hallo,

Eine Frage hätte ich dann noch. Wie lautet der Befehl um Daten aus der XML-Datei in eine PostgreSQL-Tabelle einzufügen.
Danke im voraus.

“DEN BEFEHL” gibt es nicht. Es hängt mit der Frage von castorp zusammen, also in welcher Form willst Du damit weiterarbeiten (ok, irgendwie Tabelle meinst Du) und es hängt damit zusammen, wie die Quelldaten, also die XML Datei selbst strukturiert ist.
Ein konkrete Antwort könnte man geben, wenn wir uns auf eine XML Tabelle fokussieren und Du dazu vielleicht sogar die XSD posten kannst.