У меня есть набор XSD, из которых я генерирую классы доступа к данным, хранимые процедуры и многое другое.
Чего у меня нет, так это способа сгенерировать из них таблицу базы данных - есть ли инструмент, который будет генерировать для меня операторы DDL?
Это не то же самое, что Создать таблицу БД из таблицы набора данных, поскольку у меня нет таблиц наборов данных, а есть XSD.





Коммерческий продукт: Altova's XML шпион.
Обратите внимание, что для этого нет общего решения. XSD может легко описать то, что не отображается в реляционной базе данных.
Хотя вы можете попытаться «автоматизировать» это, ваш XSD должен быть разработан с учетом реляционной базы данных, иначе это не сработает.
Если у XSD есть функции, которые плохо отображаются, вам придется (1) разработать какое-то отображение, а затем (2) написать собственное приложение для перевода XSD в DDL.
Был там, сделал это. Работа по найму - открытый исходный код отсутствует.
Создайте модель Java, используя Axis wsdl2java (которая может принимать файлы .xsd).
Используйте инструмент создания базы данных для Java, который принимает модель Java. Неужто что-то вроде Hibernate может это сделать? Я написал свой собственный инструмент (занимает пару дней, также генерирует код CRUD на Java), чтобы сэкономить время на работе, может быть, это был бы хороший личный проект?
Или просто сделайте это вручную, чтобы проверить, все ли правильно и хорошо! Инструменты базы данных теперь достаточно хороши, так что вы можете быстро создавать таблицы для модели без особых проблем.
Для этого я использую XSLT. Напишите свой XSD, а затем передайте свои модели данных через рукописный XSLT, который выводит команды SQL. Написание XSLT намного быстрее и его можно использовать многократно, чем пользовательскую программу / скрипт, которые вы можете написать.
По крайней мере, так я делаю на работе, и благодаря этому у меня есть время потусоваться на SO :)
Вы любой образец использовали XSLT? stackoverflow.com/help/how-to-answer
Взгляните на инструмент XSD в Visual Studio 2k8 ... Я создал набор реляционных данных из xsd, и он может как-то помочь вам.
Можно использовать xsd.exe для генерации схемы, но вы должны добавить отношения самостоятельно, см. Примеры массовой загрузки XML на MSDN или пример в этот вопрос. (Кажется, я припоминаю, как исправлял некоторые типы данных, но, возможно, это генерировало XSD из XML.)
Как я однажды упомянул здесь, каталог для xsd.exe, похоже, изменился в Windows 7. У меня он находится в каталогах много Microsoft SDKs, поэтому он больше похоже, не зависит от Visual Studio (?). Один каталог будет: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools.
hyperjaxb (версии 2 и 3) фактически генерирует файлы сопоставления гибернации и связанные объекты сущностей, а также выполняет тест туда и обратно для заданного XSD и образца XML-файла. Вы можете записать вывод журнала и самостоятельно увидеть операторы DDL. Мне пришлось немного подправить их, но это дает вам базовый план для начала.
XML-схемы описывают иерархические модели данных и могут плохо отображаться в реляционной модели данных. Сопоставление XSD с таблицами базы данных очень похоже на сопоставление объектов с таблицами базы данных, на самом деле вы можете использовать структуру, такую как Castor, которая делает и то, и другое, она позволяет вам брать схему XML и генерировать классы, таблицы базы данных и код доступа к данным. Я полагаю, что сейчас есть много инструментов, которые делают то же самое, но будет кривая обучения, и сопоставления по умолчанию больше всего не будут такими, как вы хотите, поэтому вам придется потратить время на настройку любого инструмента, который вы используете.
XSLT может быть самым быстрым способом сгенерировать именно тот код, который вам нужен. Если это жесткое кодирование небольшой схемы, это может быть быстрее, чем оценка и изучение множества новых технологий.
Существует инструмент командной строки XSD2DB, который генерирует базу данных из xsd-файлов, доступных на sourceforge.
к сожалению, у меня это не сработало. Произошла ошибка - System.Data.DataException: объект DataSet не поддерживает атрибуты списка и объединения элемента simpleType.
System.Data.DataException: неопределенный тип данных: «токен».
Не работает ни у меня, ни с очень простым сложным шрифтом. MsSql 2012
Я понимаю, что этот вопрос довольно мертв, но я немного покопался и обнаружил, что причина, по которой XSD2DB выдает этот тип исключения, заключается в том, что он использует DataSet для интерпретации схемы XML, тогда как он должен использовать XmlSchemaSet или XmlSchema для компиляции и управления файлом схемы. . Однако код в значительной степени зависит от реализации DataSet, поэтому я не углублялся в его изменение, чтобы оно работало.
Лучший способ создать схему базы данных SQL с помощью файла XSD - это программа под названием Altova XMLSpy, это очень просто:
Надеюсь, это поможет.
Поскольку XmlSpy 2015 Создать структуру базы данных из схемы XML не представляется возможным. Единственный подходящий вариант в разделе «Преобразование» - это создание схемы XML ИЗ базы данных.
@ChrisMarisic, если вы просто откроете XML spy и установите флажок Convert Menu, он покажет создание схемы XML только из базы данных. Что вам нужно сделать, это сначала открыть файл схемы xml в xml spy, затем вы можете использовать множество опций, включая создание структуры БД из схемы XML. Надеюсь, это поможет другим.
XML Spy 2015 мне совсем не помог, а вот XSD2DB помог.