2008-09-26 17 views

Antwort

18

Kommerzielles Produkt: Altova XML Spy.

Beachten Sie, dass es hierfür keine allgemeine Lösung gibt. Eine XSD kann leicht etwas beschreiben, das keiner relationalen Datenbank zugeordnet ist.

Während Sie versuchen können, dies zu "automatisieren", müssen Ihre XSDs mit einer relationalen Datenbank entworfen werden, oder es wird nicht gut funktionieren.

Wenn die XSDs Funktionen haben, die nicht gut abbilden, müssen Sie (1) eine Zuordnung erstellen und dann (2) Ihre eigene Anwendung schreiben, um die XSDs in DDL zu übersetzen.

Da gewesen, das getan. Leiharbeit - keine Open Source verfügbar.

+0

Wenn Sie eine Enterprise-Lizenz haben .. – jaccso

+0

XML-Spion 2015 hat mir überhaupt nicht geholfen, XSD2DB tat, obwohl. –

0

Erstellen Sie ein Java-Modell mit Axis wsdl2java (das in .xsd-Dateien enthalten kann).

Verwenden Sie ein Datenbankgenerierungstool für Java, das ein Java-Modell verwendet. Sicher kann etwas wie Hibernate das tun? Ich habe mein eigenes Tool geschrieben (dauert ein paar Tage, erzeugt auch CRUD-Code in Java), um mir Zeit bei der Arbeit zu sparen, vielleicht wäre das ein schönes persönliches Projekt?

Oder tun Sie es einfach manuell, damit Sie überprüfen können, ob alles korrekt und gut ist! Datenbank-Tools sind jetzt gut genug, dass Sie durch das Erstellen von Tabellen für ein Modell ohne zu viele Probleme zippen können.

8

Ich benutze XSLT, um das zu tun. Schreiben Sie Ihre XSD auf, und übergeben Sie Ihre Datenmodelle dann über eine handschriftliche XSLT, die SQL-Befehle ausgibt. Das Schreiben eines XSLT ist viel schneller und wiederverwendbar als ein benutzerdefiniertes Programm/Skript, das Sie schreiben können.

Mindestens das ist, wie ich es bei der Arbeit zu tun, und dank, dass ich Zeit habe SO auf hängen :)

+1

Haben Sie _ irgendein Beispiel_ mit *** XSLT ***? http://StackOverflow.com/Help/how-to-answer – Kiquenet

0

einen Blick auf dem XSD-Tool nehmen könnte in Visual Studio 2k8 ... Ich habe erstellt ein relationales Dataset von einem xsd und es könnte dir irgendwie helfen.

+0

Man kann 'xsd.exe' verwenden, um das Schema zu generieren, aber Sie müssen Beziehungen selbst hinzufügen, siehe [Beispiele für das XML-Massenladen auf MSDN] (http://msdn.microsoft.com/en-us/library/ms171806.aspx), oder das Beispiel in [diese Frage] (http://stackoverflow.com/questions/13397885/bulk-load-xml-referring-to-auto -increment-parent-id /). (Ich erinnere mich, dass ich einige Datentypen reparierte, aber vielleicht erzeugte das 'XSD' aus dem' XML'.) –

+0

Wie ich schon einmal [hier] erwähnt habe (http://stackoverflow.com/questions/74879/any-tools -to-generate-an-xsd-schema-from-ein-xml-instance-document/74939 # comment18122579_74939) scheint das Verzeichnis für 'xsd.exe' auf Windows 7 geändert zu haben. Ich habe es in _many_ Microsoft SDKs-Verzeichnissen, Es scheint also nicht mehr von Visual Studio_ (?) abhängig zu sein. Ein Verzeichnis wäre: 'C: \ Programme (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Tools'. –

0

hyperjaxb (Versionen 2 und 3) generiert tatsächlich Hibernate Mapping-Dateien und zugehörige Entitätsobjekte und führt auch einen Round-Trip-Test für eine gegebene XSD- und Beispiel-XML-Datei durch. Sie können die Protokollausgabe erfassen und die DDL-Anweisungen selbst sehen. Ich musste sie ein wenig zwicken, aber es gibt Ihnen einen grundlegenden blauen Druck, um damit zu beginnen.

3

XML-Schemas beschreiben hierarchische Datenmodelle und können einem relationalen Datenmodell möglicherweise nicht gut zugeordnet werden. Das Mapping von XSDs zu Datenbanktabellen ist sehr ähnlich wie das Zuordnen von Objekten zu Datenbanktabellen. In der Tat könnten Sie ein Framework wie Castor verwenden, das beides ermöglicht. Sie können ein XML-Schema erstellen und Klassen, Datenbanktabellen und Datenzugriffscodes generieren. Ich nehme an, es gibt jetzt viele Tools, die das Gleiche tun, aber es wird eine Lernkurve geben und die Standardzuordnungen werden am liebsten nicht so sein, wie Sie wollen, also müssen Sie Zeit investieren, um das von Ihnen verwendete Werkzeug anzupassen.

XSLT ist möglicherweise der schnellste Weg, um genau den Code zu generieren, den Sie möchten.Wenn es sich um eine kleine Schema-Hardcoding handelt, kann es schneller sein, als eine Reihe neuer Technologien zu evaluieren und auszulesen.

40

Es gibt ein Befehlszeilentool namens XSD2DB, das eine Datenbank aus xsd-Dateien generiert, die bei sourceforge verfügbar sind.

+0

Leider hat es bei mir nicht funktioniert. Es wurde ein Fehler ausgegeben - System.Data.DataException: DataSet Object unterstützt keine List- und Union-Attribute des Elements simpleType. – VilemRousi

+1

System.Data.DataException: Nicht definierter Datentyp: 'Token'. – HGMamaci

+0

Funktioniert bei mir nicht, auch nicht mit einem sehr einfachen komplexen Typ. MsSql 2012 – jaccso

3

Der beste Weg, um die SQL-Datenbank-Schema unter Verwendung einer XSD-Datei ist ein Programm namens Altova XMLSpy, das ist sehr einfach zu erstellen:

  1. Erstellen Sie ein neues Projekt
  2. Auf den DTDs/Schemas Ordner Rechtsklick und Auswählen von Dateien hinzufügen
  3. Wählt die XSD-Datei
  4. Öffnen Sie die XSD-Datei hinzugefügt durch Doppelklick auf
  5. Sie in der Symbolleiste und schauen Conversion
  6. Sie wählen Strukturdatenbank erstellen aus XML-Schema
  7. Wählt die Datenquelle
  8. Und gibt es schließlich um die Strecke zu exportieren Anrufe sofort ihre Scrip-Schemata mit SQL Server verlassen die Abfrage auszuführen.

Ich hoffe, es hilft.

+0

Als XmlSpy 2015 Create Struktur-Datenbank aus XML-Schema scheint keine Option zu sein. Die einzige relevante Option unter Konvertierung ist das Erstellen eines XML-Schemas aus der Datenbank. –

+0

@ChrisMarisic Wenn Sie nur den XML-Spion öffnen und das Menü "Convert" (Konvertieren) prüfen, wird nur das Erstellen eines XML-Schemas aus der Datenbankoption angezeigt. Was Sie tun müssen, ist, öffnen Sie zuerst Ihre XML-Schemadatei in XML-Spion, dann können Sie viele Optionen einschließlich DB-Struktur aus XML-Schema erstellen. Hoffe das hilft für andere. – Govind