Передать результат запроса в CSV-файл и отправить его как вложение, используя SQL Server 2005 - PullRequest
0 голосов
/ 02 апреля 2009

У меня есть две задачи, и, поскольку я новичок в этом, мне нужна помощь / совет от мастеров.

Что мне нужно сделать, это отправить результат запроса q select в CSV-файл, который может иметь разделитель в виде запятой или табуляции, а затем отправить этот файл в качестве вложения определенному получателю.

Надеясь на хороший совет

Ответы [ 3 ]

0 голосов
/ 02 апреля 2009

SSIS, вероятно, является подходящим вариантом, но если вы хотите, чтобы это сделал T-SQL, попробуйте это ...

Я не собираюсь писать полную программу для вас, но вот основные моменты ...

определить символ разделения:

SET @CSV=',' --use CHAR(9) for tab

построить строку CSV по одной строке за раз, просматривая результаты (сделайте это для каждой строки):

SET @FileMessage=ISNULL(CONVERT(varchar(10),column1),'')+@CSV+ISNULL(CONVERT(varchar(10),column2),'')
SET @ExecuteString = RTRIM('echo ' + @FileMessage + ' >>' + @FileName)
--append it to you file, you'll need write permissions
EXEC @ReturnValue=master..xp_cmdshell @ExecuteString, no_output

фактически отправляет почту, после того, как файл полностью собран:

EXEC xp_sendmail { [ @recipients= ] 'recipients [ ;...n ]' } 
     [ ,[ @message= ] 'message' ] 
     [ ,[ @query= ] 'query' ] 
     [ ,[ @attachments= ] 'attachments [ ;...n ]' ] 
     [ ,[ @copy_recipients= ] 'copy_recipients [ ;...n ]'
     [ ,[ @blind_copy_recipients= ] 'blind_copy_recipients [ ;...n ]'
     [ ,[ @subject= ] 'subject' ]
     [ ,[ @type= ] 'type' ] 
     [ ,[ @attach_results= ] 'attach_value' ]
     [ ,[ @no_output= ] 'output_value' ] 
     [ ,[ @no_header= ] 'header_value' ] 
     [ ,[ @width= ] width ] 
     [ ,[ @separator= ] 'separator' ] 
     [ ,[ @echo_error= ] 'echo_value' ] 
     [ ,[ @set_user= ] 'user' ] 
     [ ,[ @dbuse= ] 'database' ]
0 голосов
/ 22 декабря 2009

SSIS будет вашим лучшим вариантом. Посмотрите по этой ссылке, как перенести данные из вашего CSV-файла в SQL: Импорт данных из CSV

0 голосов
/ 02 апреля 2009

Вы можете сделать это с помощью SQL Server Integration Services (SSIS) довольно легко. Задача потока данных для копирования из запроса в плоский файл (CSV), а затем задача для отправки по электронной почте плоского файла.

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