Как я могу создавать таблицы базы данных из файлов XSD?

У меня есть набор XSD, из которых я генерирую классы доступа к данным, хранимые процедуры и многое другое.

Чего у меня нет, так это способа сгенерировать из них таблицу базы данных - есть ли инструмент, который будет генерировать для меня операторы DDL?

Это не то же самое, что Создать таблицу БД из таблицы набора данных, поскольку у меня нет таблиц наборов данных, а есть XSD.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
31
0
137 641
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Ответ принят как подходящий

Коммерческий продукт: Altova's XML шпион.

Обратите внимание, что для этого нет общего решения. XSD может легко описать то, что не отображается в реляционной базе данных.

Хотя вы можете попытаться «автоматизировать» это, ваш XSD должен быть разработан с учетом реляционной базы данных, иначе это не сработает.

Если у XSD есть функции, которые плохо отображаются, вам придется (1) разработать какое-то отображение, а затем (2) написать собственное приложение для перевода XSD в DDL.

Был там, сделал это. Работа по найму - открытый исходный код отсутствует.

XML Spy 2015 мне совсем не помог, а вот XSD2DB помог.

Chris Marisic 23.09.2014 19:07

Создайте модель Java, используя Axis wsdl2java (которая может принимать файлы .xsd).

Используйте инструмент создания базы данных для Java, который принимает модель Java. Неужто что-то вроде Hibernate может это сделать? Я написал свой собственный инструмент (занимает пару дней, также генерирует код CRUD на Java), чтобы сэкономить время на работе, может быть, это был бы хороший личный проект?

Или просто сделайте это вручную, чтобы проверить, все ли правильно и хорошо! Инструменты базы данных теперь достаточно хороши, так что вы можете быстро создавать таблицы для модели без особых проблем.

Для этого я использую XSLT. Напишите свой XSD, а затем передайте свои модели данных через рукописный XSLT, который выводит команды SQL. Написание XSLT намного быстрее и его можно использовать многократно, чем пользовательскую программу / скрипт, которые вы можете написать.

По крайней мере, так я делаю на работе, и благодаря этому у меня есть время потусоваться на SO :)

Вы любой образец использовали XSLT? stackoverflow.com/help/how-to-answer

Kiquenet 06.03.2017 12:04

Взгляните на инструмент XSD в Visual Studio 2k8 ... Я создал набор реляционных данных из xsd, и он может как-то помочь вам.

Можно использовать xsd.exe для генерации схемы, но вы должны добавить отношения самостоятельно, см. Примеры массовой загрузки XML на MSDN или пример в этот вопрос. (Кажется, я припоминаю, как исправлял некоторые типы данных, но, возможно, это генерировало XSD из XML.)

Yahoo Serious 04.07.2013 15:29

Как я однажды упомянул здесь, каталог для xsd.exe, похоже, изменился в Windows 7. У меня он находится в каталогах много Microsoft SDKs, поэтому он больше похоже, не зависит от Visual Studio (?). Один каталог будет: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools.

Yahoo Serious 04.07.2013 15:31

hyperjaxb (версии 2 и 3) фактически генерирует файлы сопоставления гибернации и связанные объекты сущностей, а также выполняет тест туда и обратно для заданного XSD и образца XML-файла. Вы можете записать вывод журнала и самостоятельно увидеть операторы DDL. Мне пришлось немного подправить их, но это дает вам базовый план для начала.

XML-схемы описывают иерархические модели данных и могут плохо отображаться в реляционной модели данных. Сопоставление XSD с таблицами базы данных очень похоже на сопоставление объектов с таблицами базы данных, на самом деле вы можете использовать структуру, такую ​​как Castor, которая делает и то, и другое, она позволяет вам брать схему XML и генерировать классы, таблицы базы данных и код доступа к данным. Я полагаю, что сейчас есть много инструментов, которые делают то же самое, но будет кривая обучения, и сопоставления по умолчанию больше всего не будут такими, как вы хотите, поэтому вам придется потратить время на настройку любого инструмента, который вы используете.

XSLT может быть самым быстрым способом сгенерировать именно тот код, который вам нужен. Если это жесткое кодирование небольшой схемы, это может быть быстрее, чем оценка и изучение множества новых технологий.

Существует инструмент командной строки XSD2DB, который генерирует базу данных из xsd-файлов, доступных на sourceforge.

к сожалению, у меня это не сработало. Произошла ошибка - System.Data.DataException: объект DataSet не поддерживает атрибуты списка и объединения элемента simpleType.

VilemRousi 20.05.2013 12:18

System.Data.DataException: неопределенный тип данных: «токен».

HGMamaci 26.11.2013 19:38

Не работает ни у меня, ни с очень простым сложным шрифтом. MsSql 2012

jaccso 14.08.2014 22:31

Я понимаю, что этот вопрос довольно мертв, но я немного покопался и обнаружил, что причина, по которой XSD2DB выдает этот тип исключения, заключается в том, что он использует DataSet для интерпретации схемы XML, тогда как он должен использовать XmlSchemaSet или XmlSchema для компиляции и управления файлом схемы. . Однако код в значительной степени зависит от реализации DataSet, поэтому я не углублялся в его изменение, чтобы оно работало.

settwi 27.06.2017 18:42

Лучший способ создать схему базы данных SQL с помощью файла XSD - это программа под названием Altova XMLSpy, это очень просто:

  1. Создать новый проект
  2. В папке DTD / Schemas щелкните правой кнопкой мыши и выберите добавить файлы
  3. Выбирает файл XSD
  4. Откройте файл XSD, добавленный двойным щелчком
  5. Зайдите на панель инструментов и посмотрите Конверсия
  6. Они выбирают Создать базу данных структуры из схемы XML.
  7. Выбирает источник данных
  8. И, наконец, дайте ему экспортировать вызовы маршрутов, немедленно оставив свои схемы сценариев SQL Server для выполнения запроса.

Надеюсь, это поможет.

Поскольку XmlSpy 2015 Создать структуру базы данных из схемы XML не представляется возможным. Единственный подходящий вариант в разделе «Преобразование» - это создание схемы XML ИЗ базы данных.

Chris Marisic 23.09.2014 18:00

@ChrisMarisic, если вы просто откроете XML spy и установите флажок Convert Menu, он покажет создание схемы XML только из базы данных. Что вам нужно сделать, это сначала открыть файл схемы xml в xml spy, затем вы можете использовать множество опций, включая создание структуры БД из схемы XML. Надеюсь, это поможет другим.

Govind 17.03.2015 09:45

Другие вопросы по теме