XML-Data to Postgres

Datenbank Migration (z. B. von MySQL auf PostgreSQL)
Antworten
Ciatronical
Benutzer
Beiträge: 50
Registriert: Sa 21. Aug 2010, 13:10
Kontaktdaten:

XML-Data to Postgres

Beitrag von Ciatronical » So 27. Aug 2017, 18:00

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

akretschmer
Erfahrener Benutzer
Beiträge: 7319
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: XML-Data to Postgres

Beitrag von akretschmer » So 27. Aug 2017, 20:53

PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

castorp
Erfahrener Benutzer
Beiträge: 1011
Registriert: Sa 27. Jun 2009, 22:24
Kontaktdaten:

Re: XML-Data to Postgres

Beitrag von castorp » Mo 28. Aug 2017, 08:02

Ciatronical hat geschrieben:
So 27. Aug 2017, 18:00
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?
Das hängt davon ab, was Du mit den XML Dateien machen willst.

Soll die Datei "als Ganzes" in die Datenbank? Sozusagen als "Documentstore"? Oder soll die XML Datei zerlegt und dann in (relationale) Tabellen gespeichert werden? Oder willst Du die XML Dateien als "Tabellen" betrachten auf die Du Abfragen machen kannst?

Wie genau sehen die Dateien aus, und was genau willst Du damit machen?
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

Ciatronical
Benutzer
Beiträge: 50
Registriert: Sa 21. Aug 2010, 13:10
Kontaktdaten:

Re: XML-Data to Postgres

Beitrag von Ciatronical » Di 29. Aug 2017, 17:26

Erstmal Dankeschön für die Antwort.

castorp hat geschrieben:
Mo 28. Aug 2017, 08:02
Oder soll die XML Datei zerlegt und dann in (relationale) Tabellen gespeichert werden? Oder willst Du die XML Dateien als "Tabellen" betrachten auf die Du Abfragen machen kannst?
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.

<MID ID="MB00423">
<Category ID="TD" Type="3">
<Link ID="0">2073</Link>
</Category>
<Category ID="SG" Type="3">
<Link ID="264">MBSG0000052</Link>
<Link ID="7">MBSG0000053</Link>
</Category><Category ID="SI" Type="1">
<Link ID="0">mb1ser</Link>
</Category>
<Category ID="KP" Type="1">
<Link ID="0">mb1imm</Link>
</Category>
<Category ID="WAM" Type="3">
<Link ID="237">8943</Link>
<Link ID="785">8944</Link>


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.

<WAMDATA xsi:noNamespaceSchemaLocation="\\ukadsvr001\trans\XmlSchemaStylesheet\ALLDATA.xsd">
<ADB ID="8944">
<ITEM ID="1">8944</ITEM>
<ITEM ID="2">E 200 K</ITEM>
<ITEM ID="6">(1995-)</ITEM>
<ITEM ID="7">2797</ITEM>
<ITEM ID="8">1490/1460</ITEM>
<ITEM ID="9">89 Nm</ITEM>
<ITEM ID="10">89 Nm</ITEM>
<ITEM ID="12">0,87N - 0,87P</ITEM>
<ITEM ID="13">0°8´N - 0°8´P</ITEM>
<ITEM ID="14">0,19N - 0,19P</ITEM>
<ITEM ID="15">0°36´N - 0°6´P</ITEM>
<ITEM ID="16">0,80N - 0,15P</ITEM>
<ITEM ID="17">0°7´ - 1°7´</ITEM>
<ITEM ID="18">0,14 - 1,14</ITEM>
<ITEM ID="19">o</ITEM>
<ITEM ID="22">0±0,60</ITEM>
<ITEM ID="23">0°±5´</ITEM>
<ITEM ID="24">0±0,33</ITEM>
<ITEM ID="25">0°45´N±41´</ITEM>
<ITEM ID="26">0,35N±0,45</ITEM>
<ITEM ID="29">$D51</ITEM>
<ITEM ID="30">0°37´±20´</ITEM>
<ITEM ID="31">0,72±0,40</ITEM>
<ITEM ID="34">$D58</ITEM>
<ITEM ID="35">12°30´±40´</ITEM>
<ITEM ID="36">12,40±0,20</ITEM>
<ITEM ID="37">12°15´</ITEM>
<ITEM ID="38">12,25</ITEM>
<ITEM ID="41">37°</ITEM>
<ITEM ID="42">37</ITEM>
<ITEM ID="43">33°46´</ITEM>
<ITEM ID="44">33,77</ITEM>
<ITEM ID="45">5,25±1,75</ITEM>
<ITEM ID="46">0°45´±25´</ITEM>
<ITEM ID="47">0,75±0,42</ITEM>
<ITEM ID="48">$D51</ITEM>
<ITEM ID="49">0°30´N±30´</ITEM>
<ITEM ID="50">0,30N±0,70</ITEM>
<ITEM ID="53">$D51</ITEM></ADB>
</WAMDATA>

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

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

Vielen Dank
Ronny

pogomips
Benutzer
Beiträge: 43
Registriert: Fr 18. Nov 2016, 09:55

Re: XML-Data to Postgres

Beitrag von pogomips » Di 29. Aug 2017, 22:57

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.

Ciatronical
Benutzer
Beiträge: 50
Registriert: Sa 21. Aug 2010, 13:10
Kontaktdaten:

Re: XML-Data to Postgres

Beitrag von Ciatronical » Mi 30. Aug 2017, 12:39

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.

Ciatronical
Benutzer
Beiträge: 50
Registriert: Sa 21. Aug 2010, 13:10
Kontaktdaten:

Re: XML-Data to Postgres

Beitrag von Ciatronical » Mi 30. Aug 2017, 16:40

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.

pogomips
Benutzer
Beiträge: 43
Registriert: Fr 18. Nov 2016, 09:55

Re: XML-Data to Postgres

Beitrag von pogomips » So 3. Sep 2017, 19:46

"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.

Antworten