2015-09-10 5 views
0

У меня есть XML-файл со схемой, определенной в нем. Схема содержит несколько вложенных элементов (например, Family (root) -> Члены семейства (список подузлов)).Как преобразовать XML в SQL?

Что было бы самым простым способом разбить это на базу данных mysql с несколькими таблицами? Предпочтительно автоматизированный инструмент/графический интерфейс для обработки этого процесса. Я пытаюсь избежать написания выделенного кода для анализа файла и извлечения данных, что было распространено в других связанных вопросах.

Я использую mac, поэтому инструменты Windows не актуальны.

ответ

1

mysql имеет нагрузку xml как command, что довольно хорошо, если ваши данные могут быть отформатированы в соответствии с этой спецификацией. Трудно сказать, будет ли это работать для вашего набора данных, не видя больше.

Первое, что вам нужно сделать, это создать схему mysql на основе XML-схемы. Для этого есть projects, но стоит отметить, что не все, что можно описать в XSD, можно реализовать в SQL.

Вы можете использовать XSLT или regexp или редактор, чтобы получить то, что хотите, а затем импортировать. Если вам нужно использовать DOM parser, чтобы преобразовать XML в CSV для загрузки в mysql, это не слишком сложно.

1

Вы, по сути, спрашиваете, как автоматизировать процесс (реляционной) нормализации, и это очень сложно, если вы только начинаете с экземпляра. Например, если ваш экземпляр имеет

<book> 
    <author>Kay</author> 
</book> 

нет никакого способа узнать, может ли книга иметь несколько авторов, которые будут влиять на структуру SQL таблицы.

Если у вас есть схема, вы можете сделать лучше, но это все еще не идеально, потому что вывод неиерархических отношений из XSD будет довольно сложным. Помимо всего прочего, обычно существуют отношения между документами, которые XSD не может описать. Необязательно помещать все данные в один гигантский XML-документ.

Для правильного выполнения этой работы вам действительно требуется обратное проектирование объектной модели, и для этого требуется семантическое понимание данных, а не просто синтаксическая манипуляция.

+0

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

Смежные вопросы