2012-12-12 25 views
13

Abbiamo un gruppo di file XML, seguendo uno schema che è essenzialmente una forma di database serializzato:Modo automatico per convertire i file XML nel database SQL?

<table1> 
    <column1>value</column1> 
    <column2>value</column2> 
</table1> 
<table1> 
    <column1>another value</column1> 
    <column2>another value</column2> 
</table1> 
... 

C'è un modo molto semplice per trasformarla in un database SQL? Ovviamente posso costruire manualmente lo schema, identificare tutte le tabelle, i campi ecc. E quindi scrivere uno script per importarlo. Mi chiedo solo se ci sono strumenti in grado di automatizzare parte o tutto il processo?

+1

cui SQL è? Alcuni, come Oracle, forniscono supporto nativo per l'importazione di XML in una tabella. – wallyk

+0

Oh. O Postgres o MySQL - senza complicazioni. (Ma niente di commerciale.) –

risposta

12

per MySQL si prega di vedere il LOAD XML SyntaxDocs.

Dovrebbe funzionare senza alcuna trasformazione XML aggiuntivo per l'XML che ci hai fornito, basta specificare il formato e definire la tabella all'interno del database in prima persona con i corrispondenti nomi delle colonne:

LOAD XML LOCAL INFILE 'table1.xml' 
    INTO TABLE table1 
    ROWS IDENTIFIED BY '<table1>'; 

C'è anche una questione connessa :

per PostgreSQL non lo so.

1

C'è un project on CodeProject che rende semplice la conversione di un file XML in SQL Script. Usa XSLT. Probabilmente potresti modificarlo per generare anche il DDL.

E Vedere questa domanda anche: Generating SQL using XML and XSLT

+0

Grande, questo è un punto di partenza davvero utile. Googling per la parte DDL mostra questo: http://xml2ddl.berlios.de/ –

+0

@steve quel collegamento è morto ora, potresti indicarmi il progetto attuale, o ovunque tu abbia trovato una soluzione migliore. Grazie! –

+2

@JeffPuckettII Sono steve ma [ho trovato un fork di esso su git hub] (https://github.com/charlesnagy/xml2ddl) –

2

Se c'è un file XML con 2 tavoli differenti, allora sarà:

LOAD XML LOCAL INFILE 'table1.xml' INTO TABLE table1 
LOAD XML LOCAL INFILE 'table1.xml' INTO TABLE table2 

lavoro

+3

Tutti questi metodi richiedono innanzitutto di costruire manualmente la tabella. –

Problemi correlati