2012-02-16 4 views
5

Esiste uno strumento opensource che converte lo schema xml nello schema del database per linux. Tutto ciò di cui ho bisogno è che dovrebbe leggere lo schema xml, generare lo schema del database corrispondente e creare tabelle con quello. Ho provato a google e tutto quello che ho trovato è xsd2db e il suo scritto in C#, ma non serve a me. Sto usando centos e il mio database è postgresql. Qualsiasi aiuto è apprezzato. Grazie in anticipo.Esiste uno strumento opensource per convertire lo schema xml nello schema del database per linux?

+0

Potresti chiarire per quale motivo non è lo strumento che non ti serve; è perché è scritto in C# o è a causa della sua (mancanza di) funzionalità per il tuo caso d'uso? Stai usando XSD come schema XML? –

+1

1. Ricorda che nel caso generale quello che stai chiedendo è un sistema [ORM] (http://en.wikipedia.org/wiki/Object-relational_mapping), e probabilmente anche più di questo. 2. Ho provato un paio di strumenti per questo, xsd2db è uno di questi, e sono rimasto totalmente insoddisfatto dall'output. Il modello orientato agli oggetti non si adatta bene al modello relazionale, quindi tutti gli strumenti che tentano di farlo automaticamente lo rendono completamente sbagliato, oppure il risultato è così complesso che è impossibile capire, per non dire costruire codice di gestione. – thkala

risposta

3

Supporto nativo appare on the way, ma non riesco a trovare nulla di nativo. Inoltre, non trovare alcun tipo di strumenti decenti per fare il lavoro.

Quindi, pensavo che sarebbe stato un buon progetto per il fine settimana per saperne un po 'di più su XSD. Ho creato xsd2pgsql per gestire questo. È ancora piuttosto approssimativo, quindi mi piacerebbe che tu lo provassi e fammi sapere dei problemi che hai. O forchetta se vuoi aiutare.

XML non è il più grande formato per rappresentare un database poiché è 3d e un DB è praticamente 2d. Quindi alcuni presupposti sono fatti da questo script, come tutti gli elementi figli di root sono la tabella primaria e qualsiasi tipo complesso dopo quello sarà una tabella. Detto questo, questo dovrebbe funzionare sulla maggior parte degli schemi XML (o almeno sui pochi che ho testato).

È possibile ottenere tutte le opzioni con l'opzione -h. In pratica, puoi fornire come argomento i file XSD e puoi utilizzare le opzioni per modificare leggermente il comportamento o far eseguire l'SQL direttamente sul tuo DB. Se si tratta di un sistema di produzione, raccomanderei di non collegarmi direttamente al DB e di assicurarsi che l'output SQL sia buono o meno, e di apportare eventuali modifiche.

Ecco un esempio di utilizzo con i file di esempio nel repository: python xsd2pgsql.py -f sample-2.xsd sample.xsd

NOTA: Attualmente questo non gestisce alcun rapporto/riferimenti tra tipi complessi tabelle/XML. Dovrai aggiungere quelli e tutti gli indici che vuoi dopo il fatto. Nemmeno gli spazi dei nomi personalizzati sono ancora supportati.

Spero che questo aiuti.