2013-03-04 15 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を使用している場合は、 CSVファイルを作成するのにSSISの機能を使用し、電子メールを送信するために 'Send Mail Task'を使用してみませんか? – JodyT

+0

要件に基づいて。これは唯一の方法です。 – ETLUser

+0

質問の結果をCSVとしてフォーマットし、sp_send_dbmail SPについてさらにいくつかの情報を追加する必要があります。これがあなたのために働いた場合、答えを受け入れることができますか? – JodyT

答えて

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を追加すると、結果が少しきれいになる場合があります。すべてオフ引数は結果と

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

を追加here

+0

ちょっとありがとう:-)私は私が探していたものを持っています。どうもありがとう。 – ETLUser

+0

@ attach_query_result_as_file = 1の行は、最後にカンマが必要です。そうでない場合、コードでエラーが発生します。 –

+0

@dev_etter:修正済み: –

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

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 
関連する問題