Необходимо импортировать данные из XML-документа, в котором элементы хранятся следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<result> <element> <id>14</id> <name>element1</name> <status>200</status> </element> <element> <id>17</id> <name>element17</name> <status>200</status> </element> <element> <id>23</id> <name>element23</name> <status>200</status> </element> <element> <id>32</id> <name>element32</name> <status>200</status> </element> <element> <id>51</id> <status>400</status> <errors> <element> <code>TestError</code> <description>Текст Ошибки</description> </element> </errors> </element> </result> |
Открываем xml файл используя оператор OPENROWSET и сохраняем в переменную @Xml
1 2 3 |
DECLARE @Xml xml; SELECT @Xml = (SELECT * FROM OPENROWSET (BULK 'C:\test.xml', SINGLE_BLOB) as [xml]); |
Заполняем временную таблицу
1 2 3 4 5 6 7 8 |
select t.c.value('./id[1]', 'int') as ID ,t.c.value('./name[1]', 'varchar(150)') as name ,t.c.value('./status[1]', 'int') as status ,t2.c2.value('./code[1]', 'varchar(150)') as code ,t2.c2.value('./description[1]', 'varchar(150)') as description INTO #tmp_result from @Xml.nodes('result/element') T(c) OUTER APPLY t.c.nodes('errors/element') t2(c2); |
Результат загрузки