Konvertieren von XML in MySQL-Tabellen


8

Ich habe eine große XML-Datei im folgenden Format und muss diese Datei in eine MySQL-Tabelle konvertieren. Bitte lassen Sie mich wissen, wie ich das erreichen kann.

~~~~~~~~~~~

<host starttime="1392325468" endtime="1392325486"><status state="up" reason="user-set"/>
<address addr="192.168.0.2" addrtype="ipv4"/>
<hostnames>
</hostnames>
<ports><extraports state="filtered" count="2">
<extrareasons reason="no-responses" count="2"/>
</extraports>
<port protocol="udp" portid="22"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="ssh" method="table" conf="3"/></port>
<port protocol="udp" portid="123"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="ntp" method="table" conf="3"/></port>
</ports>
</host>

~~~~~~~~~~~

Antworten:


4

Für MySQL können Sie die ExtractData-Funktion verwenden.

Wenn Sie auch Windows verwenden (es benötigt Net Framework), erledigt dieses alte und veraltete Tool möglicherweise noch die Aufgabe.

http://xmltodb.sourceforge.net/

Ich habe es in der Vergangenheit verwendet und es konvertiert die XML-Datei in einfache INSERT-Befehle. Für einfache XML-Dateien funktioniert es tatsächlich. Natürlich müssen die INSERT-Befehle entsprechend der DB-Variante angepasst (geändert "oder") werden, aber 90% der eigentlichen Arbeit wird mit dem Tool erledigt.

Kommerzielle Tools wie XMLSpy http://www.altova.com/xmlspy/database-xml.html verfügen über eine ähnliche Funktionalität (Sie können die Testeditionen ausprobieren).

Sie können sogar versuchen, die Datei in MS Excel zu importieren und dann zum Import in die MySQL-Datenbank in CSV zu exportieren. MS Excel verfügt über eine nette Funktion, mit der XML-Attribute XML-Attribute und -Entitäten Spalten zuordnen können. Ich habe es getestet und es funktioniert problemlos mit einem gut formatierten XML wie Ihrem.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.