Wie konvertiert Daten in XML-Dateien gespeichert, die in einer relationalen Datenbank (MySQL)?
Ich habe ein paar XML-Dateien mit Daten, die für ein Forschungs-Projekt, das ich ausführen müssen einige Statistiken auf. Die Menge der Daten ist in der Nähe 100GB.
Die Struktur ist nicht so Komplex (könnten abgebildet werden, um vielleicht 10 Tabellen in einem relationalen Modell), und angesichts der Art des Problems, diese Daten wird nie wieder aktualisiert, nur muss ich ihn in einem Ort, wo es einfach zum ausführen von Abfragen auf.
Gelesen habe ich über XML-Datenbanken und die Möglichkeit, XPATH-Stil Abfragen, aber ich nie benutzt, und ich bin nicht so zufrieden mit ihm ist. Nachdem die Daten in einer relationalen Datenbank wäre auch meine bevorzugte Wahl.
So, ich bin auf der Suche nach einem Weg, um verdeckte die gespeicherten Daten in XML in einer relationalen Datenbank (denken Sie an einen großen .sql-Datei, die ähnlich der durch Sie erzeugten mysqldump
, aber etwas anderes tun würde).
Das ultimative Ziel ist die Fähigkeit zum ausführen von SQL-Abfragen für Knirschen der Daten.
Nach einigen Recherchen bin ich fast davon überzeugt, dass ich zu schreiben habe es auf meinem eigenen.
Aber ich denke, dies ist ein häufiges problem, und daher sollte es ein tool, das bereits tut.
So, kennen Sie ein tool für die Transformation von XML-Daten in eine relationale Datenbank?
PS1:
Meine Idee wäre so etwas wie (es kann anders funktionieren, aber nur, um sicherzustellen, Sie bekommen mein Punkt):
- Analysieren Sie die Daten-Struktur (basierend auf dem XML selbst, oder auf eine XSD)
- Erstellen der relationalen Datenbank (Tabellen, Schlüssel) basieren auf dieser Struktur
- Generieren Sie SQL-Anweisungen zum erstellen der Datenbank
- Generieren Sie SQL-Anweisungen zu erstellen, füllen Sie die Daten
PS2:
Ich habe gesehen, einige Beiträge hier in SO aber trotzdem konnte ich keine Lösung finden.
Microsoft ' s "Xml-Massenladen" tool scheint etwas zu tun in diese Richtung, aber ich habe nicht einen MS-SQL-Server.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Datenbanken sind nicht der einzige Weg, um suchen von Daten. Kann ich sehr empfehlen Apache Solr
Halten Sie Ihre raw-Daten als XML und suchen Sie mit dem Solr-index
XML-Dateien importieren im richtigen format in eine MySql-Datenbank ist einfach:
https://dev.mysql.com/doc/refman/5.6/en/load-xml.html
Bedeutet dies, Sie haben in der Regel für die Transformation von XML-Daten in das Art-format. Wie Sie dies tun, hängt von der Komplexität der transformation, welche Programmiersprachen Sie wissen, und wenn Sie möchten, verwenden Sie XSLT (das ist wohl eine gute Idee).
Aus Ihren früheren Antworten, es scheint, dass Sie wissen, Python, so http://xmlsoft.org/XSLT/python.html kann das richtige für Sie, um mit zu beginnen.
Werfen Sie einen Blick auf StAX anstelle von XSD für die Analyse/Gewinnung von Daten. Es ist Strom bezogen und kann sich mit großen XML-Dateien.
Wenn Sie sich wohl fühlen mit Perl, ich habe ziemlich viel Glück mit
XML::Twig
- Modul für die Bearbeitung von sehr großen XML-Dateien.Im Grunde alles, was Sie brauchen, um das setup einige Zweig-Handler und importieren Sie Ihre Daten in MySQL mit
DBI
/DBD::mysql
.Es ist ziemlich gut Beispiel auf xmltwig.org.
Wenn Sie bequem mit kommerziellen Produkten, möchten Sie vielleicht einen Blick auf Data Wizard für MySQL die von SQL Maestro Group.
Diese Anwendung zielt vor allem auf den Export, und, natürlich, importieren von Daten aus/auf die MySQL-Datenbanken. Dies auch enthält die XML-import. Sie können eine Kostenlose 30-Tage-Testversion um zu überprüfen, ob dies ist, was Sie suchen.
Ich muss zugeben, dass ich nicht die MySQL-Produktlinie von Ihnen noch, aber ich hatte eine gute user Erfahrung mit der Firebird und SQLite Maestro Maestro Produkte.