Перемещение результатов запроса T-SQL в файл без использования BCP? - PullRequest
0 голосов
/ 04 августа 2011

Что я хочу сделать, это вывести некоторые результаты запроса в файл. В основном, когда я запрашиваю интересующую меня таблицу, мои результаты выглядят так:

HTML_ID    HTML_CONTENT
1          <html>...
2          <html>...
3          <html>...
4          <html>...
5          <html>...
6          <html>...
7          <html>...

Поле HTML_CONTENT имеет тип ntext, а значение каждой записи составляет около 500+ символов (которые содержат HTML-содержимое).

Я могу создать курсор для перемещения содержимого каждой записи во временную таблицу или что-то еще. Но мой вопрос заключается в следующем: вместо временной таблицы, как бы я переместить это без использования BCP?

BCP не вариант, так как наш sysadmin заблокировал доступ к sys.xp_cmdshell.

Примечание: я хочу store each record's HTML content to individual files

Моя версия sql: Microsoft SQL Server 2008 (SP1) - 10.0.2531.0

Ответы [ 2 ]

0 голосов
/ 04 августа 2011

Вы можете использовать SSIS для чтения данных таблицы и вывода содержимого строк таблицы в виде файлов. Преобразование столбца экспорта, доступное в задаче потока данных пакетов служб SSIS, может помочь вам в этом.

Вот пример, Преобразование столбца экспорта

Документация MSDN о преобразовании столбца экспорта.

0 голосов
/ 04 августа 2011

Этот ответ работал бы до тех пор, пока вы не добавили требование для отдельных файлов .

. Вы можете запустить SQL из командной строки и вывести вывод в файл.Для этого могут использоваться следующие утилиты.

Вотпример с SQLCMD со встроенным запросом

sqlcmd -S ServerName -E -Q "Select GetDate() CurrentDateAndTime" > output.txt

Вы можете сохранить запрос в файл (QueryString.sql) и использовать -i вместо

sqlcmd -S ServerName -E -i QueryString.sql> output.txt

Редактировать

Использовать SSIS

  • Создать пакет
  • Создать переменную RecordsToOutput типа Object в пакетеlevel
  • Используйте задачу EXECUTE SQL и верните набор данных в RecordsToOutput
  • Используйте цикл For-Each для прохождения набора данных RecordsToOutput
    • В цикле создайте переменнуюдля каждого столбца в наборе данных (присвойте ему одно и то же имя)
    • Добавьте задачу потока данных
    • Используйте источник OleDB и используйте инструкцию SQL для создания одной строки (с данными, которые у вас уже есть)
    • используйте место назначения плоского файла для записи строки.
    • Используйте выражения для соединения с плоским файлом, чтобы изменитьИмя файла назначения для каждой строки в цикле.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...