Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 парсинг xml в базу данных. подскажите алгоритм  [new]
Шпунтик
Member

Откуда:
Сообщений: 148
есть xml сложной структуры и примерно 20 таблиц, в которые его надо распарсить, возникает вопрос, как это сделать оптимальным способом?

автор
Declare @DOC xml
Declare @idoc int

SELECT * INTO#xml FROM
OPENROWSET(Bulk 'C:\A.xml',SINGLE_BLOB) [rowsetresults]

SET @DOC=(SELECT top 1 BulkColumn FROM #xml)
EXEC sp_xml_preparedocument @idoc OUTPUT, @Doc

SELECT * INTO#A
FROM OPENXML (@idoc,'',2)


первая мысль, которая пробралась мне в голову, это просто модифицировать #A, сделав из неё таблицу (атрибут, значение), из которой потом по наименованию атрибута выбирать данные в соответствующие таблицы

но такой подход быстро встал, когда потребовалось выбрать 2 разных атрибута в одну таблицу

можно, конечно, налепить кучу временных таблиц, в которые выгружать данные из xml, а потом уже работать с ними (разнообразные проверки) и переносить в существующие
27 июл 11, 18:10    [11035982]     Ответить | Цитировать Сообщить модератору
 Re: парсинг xml в базу данных. подскажите алгоритм  [new]
Fire83
Member

Откуда: Гомель-Минск
Сообщений: 474
Шпунтик,

А что мешает использовать XQuery?
27 июл 11, 19:07    [11036222]     Ответить | Цитировать Сообщить модератору
 Re: парсинг xml в базу данных. подскажите алгоритм  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31991
Шпунтик
но такой подход быстро встал, когда потребовалось выбрать 2 разных атрибута в одну таблицу
Почему "подход встал"???

Очень просто получается, делаете по 2 джойна #A для каждого атрибута.

Много текста придётся писать, но работать будет быстро.

Хотя можно и XQuery, если версия позволит.
27 июл 11, 20:41    [11036448]     Ответить | Цитировать Сообщить модератору
 Re: парсинг xml в базу данных. подскажите алгоритм  [new]
Шпунтик
Member

Откуда:
Сообщений: 148
alexeyvg,

ну два - это первая итерация, где-то надо будет и 22)

а можно какой-нибудь пример с использованием xquery, а то я только сейчас о нём и узнал, на msdn'не как-то не очень понятно для нуба всё описано
27 июл 11, 21:05    [11036512]     Ответить | Цитировать Сообщить модератору
 Re: парсинг xml в базу данных. подскажите алгоритм  [new]
Шпунтик
Member

Откуда:
Сообщений: 148
alexeyvg,

ну и использовать декартово произведение таблиц даже при n=2 мне кажется сильно скажется на скорости работы процедуры, на первой итерации мне надо обработать около 20.000 xml, ~ 70 тэгов нижнего уровня
27 июл 11, 21:09    [11036522]     Ответить | Цитировать Сообщить модератору
 Re: парсинг xml в базу данных. подскажите алгоритм  [new]
Fire83
Member

Откуда: Гомель-Минск
Сообщений: 474
Шпунтик,

Версию назовите вашего сиквела
27 июл 11, 23:34    [11036911]     Ответить | Цитировать Сообщить модератору
 Re: парсинг xml в базу данных. подскажите алгоритм  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
Fire83
Версию назовите вашего сиквела
А какая разница? 2000 не умеет, так что 2005-2008. Так что 2005, и что там думать-то?
28 июл 11, 03:35    [11037365]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить