ВЫБРАТЬ ... для XML в файл - PullRequest
       1

ВЫБРАТЬ ... для XML в файл

2 голосов
/ 23 февраля 2011

У меня есть запрос, возвращающий большой XML, его размер может достигать 1 ГБ в крайних случаях, но обычно это занимает сотни мегабайт.

Очевидный подход, когда клиентская программа получает все данные одновременно и сохраняет их в памяти, в этом случае не работает.

Есть ли способ сделать результат вывода SQL Server в файл? Или, может быть, он может доставить полученные данные по частям? В последнем случае было бы тривиально направить вывод в файл без загрузки всего в память.

В соответствии с постановкой задачи полученный XML должен быть преобразован с помощью XSLT, что приведет к гораздо меньшему результату. В идеале сервер должен быть проинструктирован выводить данные XML в канал, который может быть подключен к движку xslt, выполняемому как отдельный процесс. Однако я не вижу способа сделать это.

Есть ли идеи?

Спасибо.

Клиентская программа должна быть написана на C # 3.

Версия SQL Server 2005, однако, если действительно хорошее решение существует только в 2008 году, это ограничение не следует считать существенным

1 Ответ

2 голосов
/ 24 февраля 2011

Если вы используете язык .NET и ADO.NET, здесь

http://www.csharp -station.com / Учебники / AdoDotNet / Lesson02.aspx

вы найдете пример того, как передать результирующий набор SQL SELECT в поток консоли с помощью SqlDataReader. Замените Консоль потоком файлов, и все готово.

К сожалению, это работает, только если ваш XML хранится построчно в нескольких текстовых строках. Если ваш XML хранится в поле BLOB, вам нужен какой-то фрагмент. Прочтите эту статью, как это сделать:

http://support.microsoft.com/kb/317034/EN-US

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