2013-03-04 94 views
8

我正在使用ETL,並在SSIS包中的SQL任務中使用了下面的SQL代碼。這是我編碼的方式。我正在從表中選擇一個數據並將該查詢的結果作爲文件。我希望以CSV格式發送此附件。我該怎麼做?如何以CSV格式發送查詢結果?

EXEC sp_send_dbmail @profile_name='default', 
@recipients='[email protected]', 
@[email protected], 
@[email protected], 

@query= 'SELECT [MID],[HID],[MeC],[LC],[RowCDate] 
FROM [JBC].[dbo].[Table1] WHERE RowCDate >= GETDATE() 
', 
@attach_query_result_as_file=1 

任何幫助將不勝感激。提前致謝。

+0

如果您正在使用SSIS然後爲什麼不使用SSIS的功能來創建一個CSV文件和發送郵件任務來發送電子郵件? – JodyT 2013-03-04 19:37:27

+0

根據要求。這是必須做的唯一方法 – ETLUser 2013-03-04 19:40:31

+0

我在下面添加了一個答案,應該將查詢結果格式化爲CSV並添加了一些關於sp_send_dbmail SP的更多信息。如果這對你有用,你能接受答案嗎? – JodyT 2013-03-05 08:22:08

回答

25

添加@query_result_separator應該做的伎倆。

EXEC sp_send_dbmail @profile_name='default', 
@recipients='[email protected]', 
@[email protected], 
@[email protected], 

@query= 'SELECT [MID],[HID],[MeC],[LC],[RowCDate] 
FROM [JBC].[dbo].[Table1] WHERE RowCDate >= GETDATE() 
', 
@attach_query_result_as_file=1, 
@query_attachment_filename = 'Results.csv', 
@query_result_separator = ',' 

添加@query_result_no_padding = 1可能會清理一下結果。全部關閉的參數可以發現here

+0

嘿謝謝:-)我得到了我正在尋找的東西。非常感謝。 – ETLUser 2013-03-05 21:35:25

+0

@ attach_query_result_as_file = 1的行在結尾處需要逗號,否則代碼將引發錯誤。 – 2015-05-05 19:05:05

+0

@dev_etter:固定:) – 2015-05-18 13:30:59

10
@query=' 
SET NOCOUNT ON; 
select ''sep=;'' 
select ''Col1'',''Col2'',''Col3'',''Col3'' 

select CONVERT(NVARCHAR,Col1),ISNULL(Col2, ''''),Col4 
FROM ... 
SET NOCOUNT OFF; 
', 

--Additional settings 
@query_attachment_filename = '*.csv', 
@query_result_separator = ';', 
@attach_query_result_as_file = 1, 
@query_result_no_padding= 1, 
@exclude_query_output =1, 
@append_query_error = 0, 
@query_result_header =0; 
+0

對@query定義中的NOCOUNT有好的想法。 +1 – smoore4 2017-05-24 17:14:03

4

添加

'[sep=,' + CHAR(13) + CHAR(10) ColumnName] 

與結果解決了這個問題

Source

0

This comment on purple frog表示您還可以使用製表符作爲分隔符。

看起來也很喜歡這個答案一直貼已,我的壞:https://stackoverflow.com/a/44315682/5758637

(複製和粘貼的情況下,紫色青蛙鏈路出現死在未來):

DECLARE @tab char(1) = CHAR(9) 
EXEC msdb.dbo.sp_send_dbmail 
@profile_name='donotreply' 
,@recipients ='[email protected]' 
,@query= @query 
,@subject= 'xx' 
,@attach_query_result_as_file=1  
,@query_attachment_filename='xx.csv'  
,@[email protected] 
,@query_result_no_padding=1 –trim 
,@query_result_width=32767 –stop wordwrap 
相關問題