2008-09-26 15 views

Respuesta

18

Producto comercial: Altova XML Spy.

Tenga en cuenta que no hay una solución general para esto. Un XSD puede describir fácilmente algo que no se asigna a una base de datos relacional.

Si bien puede tratar de "automatizar" esto, sus XSD deben diseñarse con una base de datos relacional en mente, o no funcionará bien.

Si las XSD tienen características que no se mapean bien, deberá (1) diseñar una asignación de algún tipo y luego (2) escribir su propia aplicación para traducir las XSD a DDL.

He estado allí, hecho eso. Trabaja por contrato, no hay fuente abierta disponible.

+0

Si tiene una licencia de empresa ... – jaccso

+0

XML Spy 2015 no me ayudó en absoluto, aunque XSD2DB sí lo hizo. –

0

Cree un modelo de Java utilizando Axis wsdl2java (que puede incluir archivos .xsd).

Utilice una herramienta de generación de base de datos para Java que incluya un modelo de Java. Seguramente algo como Hibernate puede hacer esto? Escribí mi propia herramienta (lleva un par de días, también genera código CRUD en Java) para ahorrarme tiempo en el trabajo, ¿quizás sería un buen proyecto personal?

¡O simplemente hágalo manualmente para que pueda comprobar que todo está correcto y es bueno! Las herramientas de base de datos son lo suficientemente buenas ahora que puede crear tablas para un modelo sin demasiados problemas.

8

Uso XSLT para hacer eso. Escriba su XSD y luego pase sus modelos de datos a través de un XSLT escrito a mano que emite comandos SQL. Escribir un XSLT es mucho más rápido y reutilizable que un programa/script personalizado que puede escribir.

Al menos eso es cómo lo hago en el trabajo, y gracias a que tengo tiempo para pasar el rato en SO :)

+1

¿Tiene _una muestra_ usando *** XSLT ***? http://stackoverflow.com/help/how-to-answer – Kiquenet

0

podría tomar un vistazo a la herramienta XSD en 2k8 visual studio ... He creado un conjunto de datos relacionales de un xsd y podría ayudar de alguna manera.

+0

Se puede usar 'xsd.exe' para generar el esquema, pero debe agregar las relaciones usted mismo, consulte [los ejemplos de carga masiva de XML en MSDN] (http://msdn.microsoft.com/en-us/library/ms171806.aspx), o el ejemplo en [esta pregunta] (http://stackoverflow.com/questions/13397885/bulk-load-xml-referring-to-auto -incremento-padre-id /). (Parece que recuerdo haber arreglado algunos tipos de datos, pero quizás eso estaba generando el 'XSD' del' XML'.) –

+0

Como mencioné una vez [aquí] (http://stackoverflow.com/questions/74879/any-tools -to-generate-an-xsd-schema-from-an-xml-instance-document/74939 # comment18122579_74939) el directorio para 'xsd.exe' parece haber cambiado en Windows 7. Lo tengo en _many_ directorios de Microsoft SDKs, por lo que _ parece que ya no depende de Visual Studio_ (?). Un directorio sería: 'C: \ Archivos de programa (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Tools'. –

0

hyperjaxb (versiones 2 y 3) realmente genera archivos de mapeo hibernate y objetos de entidad relacionados y también realiza una prueba de ida y vuelta para un XSD determinado y un archivo XML de muestra. Puede capturar el resultado del registro y ver las declaraciones DDL por usted mismo. Tuve que ajustarlos un poco, pero para empezar, te da una impresión básica azul.

3

Los esquemas XML describen modelos de datos jerárquicos y es posible que no se correspondan bien con un modelo de datos relacionales. Asignar XSD a tablas de bases de datos es muy similar al mapeo de objetos a tablas de bases de datos; de hecho, podría usar un marco como Castor que hace ambas cosas, le permite tomar un esquema XML y generar clases, tablas de base de datos y código de acceso a datos. Supongo que ahora hay muchas herramientas que hacen lo mismo, pero habrá una curva de aprendizaje y a las asignaciones predeterminadas les gustará no ser lo que quieres, así que tienes que dedicar tiempo a personalizar cualquier herramienta que uses.

XSLT podría ser la forma más rápida de generar exactamente el código que desea.Si se trata de un esquema pequeño de codificación rígida, podría ser más rápido que evaluar y aprender un montón de nuevas tecnologías.

40

Hay una herramienta de línea de comandos llamada XSD2DB, que genera una base de datos a partir de archivos xsd, disponible en sourceforge.

+0

desafortunadamente no funcionó para mí. Lanzó un error: System.Data.DataException: DataSet Object no admite los atributos list y union del elemento simpleType. – VilemRousi

+1

System.Data.DataException: tipo de datos no definidos: 'token'. – HGMamaci

+0

No funciona para mí, ni con un tipo complejo muy simple. MsSql 2012 – jaccso

3

La mejor manera de crear el esquema de base de datos SQL utilizando un archivo XSD es un programa llamado Altova XMLSpy, esto es muy simple:

  1. Crear un nuevo proyecto
  2. En las DTD/esquemas clic carpeta correcta y seleccionando añadir archivos
  3. selecciona el archivo XSD
  4. Abrir el archivo XSD añadido haciendo doble clic en
  5. Ir a la barra de herramientas y buscar la conversión
  6. Ellos seleccione Crear base de datos de la estructura de esquema XML
  7. Selecciona la fuente de datos
  8. Y finalmente darle a exportar la ruta llamadas abandonar inmediatamente sus esquemas alforja con SQL Server para ejecutar la consulta.

Espero que ayude.

+0

Como XmlSpy 2015 Crear base de datos de estructura a partir del esquema XML no parece ser una opción. La única opción relevante en Conversión es crear un esquema XML DESDE la base de datos. –

+0

@ChrisMarisic si solo abre XML espía y comprueba el menú Convertir, se mostrará la opción crear un esquema XML solo desde la base de datos. Lo que tienes que hacer es, primero, abrir tu archivo de esquema xml en xml spy, entonces puedes tener muchas opciones, incluida la estructura Create DB from XML Schema. Espero que esto ayude a otros. – Govind

Cuestiones relacionadas