Conversione di XML in tabelle MySQL


8

Ho un file XML di grandi dimensioni nel seguente formato e devo convertire questo file in una tabella MySQL. Per favore fatemi sapere come posso realizzare questo?

~~~~~~~~~~

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

~~~~~~~~~~

Risposte:


4

Per MySQL, è possibile utilizzare la funzione ExtractData.

Se stai usando anche Windows (ha bisogno di Net Framework), questo strumento vecchio e obsoleto potrebbe ancora fare il lavoro.

http://xmltodb.sourceforge.net/

L'ho usato in passato e converte il file XML in semplici comandi INSERT. Per i semplici file XML funziona davvero. Naturalmente i comandi INSERT avranno bisogno di alcune modifiche (change "o ') in base al sapore del db, ma il 90% del lavoro effettivo viene eseguito con lo strumento.

Strumenti commerciali come XMLSpy http://www.altova.com/xmlspy/database-xml.html hanno una funzionalità simile (puoi provare le edizioni di prova).

Puoi anche provare a importare il file in MS Excel e quindi esportarlo in CSV per importarlo nel database MySQL. MS Excel ha una bella funzionalità mappe XML in grado di mappare attributi ed entità XML su colonne. L'ho provato e funzionerà facilmente con un XML ben formattato come il tuo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.