Необходимо импортировать данные из 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); |
Результат загрузки
что делать если при обращению к файлу SQL даёт ошибку
Cannot bulk load because the file «Путь к файлу.xml» could not be opened. Operating system error code 5(Отказано в доступе.)?
Учетная запись службы SQL Server должна иметь разрешение на чтение этого файла.
Что делать, выходит ошибка «Microsoft XML Bulkload for SQL Server (16389) Error connecting to the data source.»?
Эта ошибка выходит в SQL Server Management Studio?
Не выполняется пакетная загрузка XML на SQL-сервер. Select выполняется, а Update, Insert нет. Текстовые файлы загружаются нормально. Запускаем готовый файл загрузки.