Прочитать BLOB-столбец и преобразовать его в XML-файл - PullRequest
0 голосов
/ 28 мая 2018

У меня есть столбец, который является BLOB-объектом.Вот скриншот:

TBDocuments table with Document Column As BLOB

Как видите, у меня есть таблица TBDOCUMENTS.В этой таблице столбец DOCUMENT равен BLOB.Я хочу прочитать эту колонку.Тогда я знаю, что для этого конкретного DOCUMENTURL этот столбец содержит xml.Поэтому я хочу преобразовать его в XML.А потом я хочу записать этот XML в файл.

Как я могу сделать это в SQL Server?Я использую SQL Server 2014

1 Ответ

0 голосов
/ 28 мая 2018

Чтобы прочитать xml, который вы сохранили внутри столбца BLOB-объекта (например, varbinary), вы можете использовать CONVERT:

select CONVERT(xml,(CONVERT(varbinary(max),DOCUMENT))) 
from TBDOCUMENTS
where DOCUMENTURL='...'

Теперь вы можете записать эту строку в файл XML.Я думаю, что SQL Server, вероятно, не подходит для этой задачи;тем не менее, существует множество методов для достижения этой цели, например, с помощью bcp (дополнительная информация здесь и здесь )

Как указано в комментариях, ошибка, связанная с DTD, может возникнуть, когдаиспользование CONVERT:

Разбор XML с внутренними DTD не разрешен.Используйте CONVERT со стилем 2, чтобы включить ограниченную поддержку DTD для внутреннего подмножества.

В этом случае использование опции xml-styles команды CONVERT (подробнее здесь ) решает проблему:

select CONVERT(xml,(CONVERT(varbinary(max),DOCUMENT)), 2)
from TBDOCUMENTS
where DOCUMENTURL='...'
...