Conversion de XML en tables MySQL


8

J'ai un gros fichier XML au format suivant et j'ai besoin de convertir ce fichier en une table MySQL. Veuillez me faire savoir comment puis-je y parvenir?

~~~~~~~~~~

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

~~~~~~~~~~

Réponses:


4

Pour MySQL, vous pouvez utiliser la fonction ExtractData.

Si vous utilisez également Windows (il a besoin de Net Framework), cet outil ancien et obsolète pourrait toujours faire le travail.

http://xmltodb.sourceforge.net/

Je l'ai utilisé dans le passé et il convertit le fichier XML en commandes INSERT simples. Pour les fichiers XML simples, cela fonctionne réellement. Bien sûr, les commandes INSERT auront besoin de quelques ajustements (changement "ou ') en fonction de la saveur db mais 90% du travail réel est fait avec l'outil.

Les outils commerciaux comme XMLSpy http://www.altova.com/xmlspy/database-xml.html ont une fonctionnalité similaire (vous pouvez essayer les éditions d'essai).

Vous pouvez même essayer d'importer le fichier vers MS Excel, puis d'exporter vers CSV pour l'importer dans la base de données MySQL. MS Excel a une belle fonctionnalité de cartes XML qui peuvent mapper des attributs et des entités XML à des colonnes. Je l'ai testé et il fonctionnera facilement avec un XML bien formaté comme le vôtre.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.