TSQL - экспортировать запрос в xls / xslx / csv - PullRequest
3 голосов
/ 04 января 2011

У меня сложный динамический запрос в TSQL, который я хочу экспортировать в Excel.[Таблица результатов содержит поля с текстом длиной более 255 символов, если это имеет значение]

Я знаю, что могу экспортировать результат с помощью меню Management Studio, но я хочу сделать это автоматически по коду.Знаете как?

Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 04 января 2011

Вы можете взглянуть на sp_send_dbmail . Это позволяет вам отправить электронное письмо из вашего запроса после его выполнения, содержащее прикрепленный CSV-набор результатов. Очевидно, что жизнеспособность этого метода будет зависеть от того, насколько велик ваш набор результатов.

Пример из связанного документа:

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'AdventureWorks2008R2 Administrator',
@recipients = 'danw@Adventure-Works.com',
@query = 'SELECT COUNT(*) FROM AdventureWorks2008R2.Production.WorkOrder
              WHERE DueDate > ''2006-04-30''
              AND  DATEDIFF(dd, ''2006-04-30'', DueDate) < 2' ,
@subject = 'Work Order Count',
@attach_query_result_as_file = 1 ;
1 голос
/ 04 января 2011

Некоторые подходы здесь: SQL Server Excel Workbench

1 голос
/ 04 января 2011

Одним из способов является использование bcp, который вы можете вызвать из командной строки - посмотрите примеры в этой ссылке и, в частности, посмотрите информацию об аргументе -t, которую вы можете использовать для установки терминатора поля (для CSV) , Эта ссылка на ссылку Указание терминаторов поля и строки .

Или, напрямую используя TSQL, вы можете использовать OPENROWSET , как объяснил здесь Пинал Дэйв .

Обновление: Re ;: 2008 64Bit & OPENROWSET - я не знал об этом, быстрое копание подбрасывает это на форумах MSDN с указанной ссылкой. Любая помощь?

Помимо этого, другие варианты включают написание пакета служб SSIS или использование SQL CLR для написания процедуры экспорта в .NET для вызова непосредственно из SQL. Или вы можете вызвать bcp из TSQL через xp_cmdshell - вы должны включить его, что откроет возможную «поверхность атаки» SQL Server. Я предлагаю проверить это обсуждение .

0 голосов
/ 11 июня 2013

Мне нужно было принять динамический запрос и сохранить результаты на диск, чтобы я мог загрузить его через веб-приложение.

вставка в источник данных не сработала для меня из-за постоянных усилий по обеспечению его работы.

В конце концов я отправил запрос в powershell из SSMS Прочитайте мой пост здесь Как создать документ на сервере, запустив существующую хранимую процедуру или оператор SQL этой процедуры на сервере SQL R2008

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

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