Разрежьте сложные данные XML на множество таблиц в SQL? - PullRequest
0 голосов
/ 25 августа 2009

У меня достаточно сложный XML-документ, который я хочу свести к таблицам в SQL Server 2005. Мне не нужно кодировать каждое поле и сопоставление таблиц вручную. Данные поступают в промежуточную область хранилища данных, поэтому не важно, насколько структурированы таблицы.

Пока я рассмотрел и отверг следующее ...

OpenXML - кажется, что я могу прочитать XML в память в SQL, используя это, но затем должен написать загрузку SQL для выполнения всех вставок. Нет, спасибо.

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

SqlBulkCopy - похоже, мне все еще нужно написать все элементы отображения.

Отвергнув все это, я думаю о том, чтобы свернуть свое собственное в C #, идея кажется довольно простой. Считайте данные в xmlReader, затем обойдите дерево и сгенерируйте вставки. У меня может быть отдельное действие, которое запускается только во время разработки для генерации схемы.

Есть мысли по этому поводу?

Ответы [ 2 ]

1 голос
/ 25 августа 2009

Использование новой поддержки XML в SQL 2005. Это намного лучше, чем OPENXML в более ранних версиях. Вам не нужны xsd вещи.

В какой-то момент вам нужно сопоставление. XML может быть самоописуемым, но таблицы базы данных не ...

Пример вопроса (ну мой ответ)

0 голосов
/ 25 августа 2009

В этом случае окончательный ответ оказался намного проще ...

Изучая детали требований, выясняется, что даже если данные сильно структурированы, нужные нам части могут быть представлены одной таблицей. Поэтому я могу запустить xslt-преобразование для xml, чтобы получить набор строк и столбцов, которые идут прямо в таблицу. В этом случае через SSIS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...