import von xml-daten

Hallo,

ich bin Neuling was Postgres angeht und hätte gerne eine Einschätzung bezüglich eines Import-Problems.

Ich habe aus einem Forschungsprojekt heraus von einer Bibliothek eine Literaturdatenbank als xml-Files zur Verfügung gestellt bekommen. Die Daten werden von der Bibliothek regelmässig überarbeitet und auf einem Server abgelegt. Insgesamt sind es über 5gig gezippte Daten, also nicht unbedingt wenig.

Um damit weiterarbeiten zu können, muss ich die Daten irgendwie in Postgres importieren. Danach sollen dann eine Volltextsuche aufgesetzt werden (ergänzt mit weiteren Daten).

Dazu meine Fragen:

Gibt es irgendein sinnvolles Tool, das die Daten direkt importiert oder in eine geeignete Form (csv?) umwandelt?

Macht es überhaupt Sinn, die Daten inklusive alles xml-Auszeichnungen zu importieren oder wäre es - alleine, um die Dateigröße zu reduzieren - vielleicht sinnvoller, das ganze vorher irgendwie zu parsen und reinen Daten sinnvoll auf einzelne Tabellenfelder zu verteilen und zu importieren?

Wäre für einen Rat sehr dankbar.

mu

Ich würde Dir empfehlen, Mister XML himself zu fragen. Damit meine ich Peter Eisentraut. Allerdings liest der hier wohl nicht mit, aber er ist auf der deutschen pg-Mailingliste zu finden.

Andreas

Neben dem Hinweis von akretschmer noch einige Gedanken von mir:

Nur du alleine weisst, welche Daten aus diesen 5 GB du weiter benötigst. also kannst auch nur du die Frage beantworten, welche Daten du importieren musst und welche du weglassen kannst.

Gerade bei einer solchen Datenmenge würde ich mir von vorneherein Gedanken machen, wie ich meine Struktur aufbaue und stark auf Normalisierung achten. Jeder Fehler hier dürfte sich später um so mehr rächen. Der ein oder andere Test im Vorfeld ist hier sicherlich angebracht :wink:

Ein Tool, das deine Daten direkt importiert, wird wohl schwer zu bekommen sein, schliesslich weiss niemand vorher, wie die XML Datei aufgebaut ist oder wie deine Tabellenstruktur später aussehen soll. Aber mir ein paar Dutzend Zeilen in deiner bevorzugten Scriptsprache sollte sich da eine ganze Menge machen lassen. XML können mittlerweile fast alle auslesen und zu einer DB connecten und Abfragen absetzen auch.

Zur Volltextsuche sage ich mal nur: tsearch2.

Danke für die Tipps!

Wenn ich das richtig verstehe, dann muss man sich mit der dtd (die sich jedes jahr leicht ändert…) und den Files hinsetzen und alles einzeln auseinanderfummeln. Ich glaube, es wird noch etwas dauern, bis ich verstehe, was xml beim Datenaustausch gegenüber einer banalen csv-datei so überlegen macht :wink:

Da es eine reine Literaturdatenbank ist, ist der generelle Aufbau verhältnismässig einfach:

Titel
Autor
Zusammenfassung
… usw.

Wenn man das alles in eine einzelne Tabelle packt, dann sind es vermutlich insgesamt vermutlich rund 20-30 Spalten.

Innerhalb dieser “Rubriken” ist aber noch alles mögliche mit Attributen ausgezeichnet, was es dann doch wieder unübersichtlich macht. Muss ich durch… :wink:

Also wenn die XML Datei immer nur die gleichen Datensätze auflistet, bietet XML wohl nur geringe Vorteile, dafür aber den Nachteil, jede Menge mehr Platz zu brauchen.

Sinn würde es machen, wenn man mehrere verschiedene Strukturen hat, Texte mehrsprachig, Verweise auf Autoren an anderer Stelle in der Datei statt die Daten bei jedem Eintrag mitzuschleppen oder so.

Anmerkungen:

  • ein Autor kann mehrere Bücher geschrieben haben
  • ein Buch kann von mehreren Autoren stammen

Schon hier siehst Du, daß eine einzelne Tabelle wohl nicht sinnvoll ist…


Andreas

Ich empfehle dir ganz dringend, dich mit den Grundlagen relationaler Datenbanksysteme und speziell mit:

vertraut zu machen.


Innerhalb dieser “Rubriken” ist aber noch alles mögliche mit Attributen ausgezeichnet, was es dann doch wieder unübersichtlich macht.

Nicht, wenn du es vernünftig normalisierst.


Muss ich durch… :wink:

Nein.