簡體   English   中英

如何以CSV格式發送查詢結果?

[英]How to send a query result in CSV format?

我正在研究 ETL,我在 SSIS 包中的 SQL 任務中有以下 sql 代碼。 這就是我編碼的方式。 我正在從表中選擇數據,並將該查詢的結果作為文件。 我希望以 CSV 格式發送此附件。 我該怎么做?

EXEC sp_send_dbmail @profile_name='default',
@recipients='dev@null.com',
@subject=@SUB,
@body=@BODY,

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

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

添加@query_result_separator應該可以解決問題。

EXEC sp_send_dbmail @profile_name='default',
@recipients='dev@null.com',
@subject=@SUB,
@body=@BODY,

@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可能會@query_result_no_padding = 1清理結果。 所有的論點都可以在這里找到

@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;

添加

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

結果解決了這個問題

查看來源

這條關於紫色青蛙的評論表明您還可以使用制表符作為分隔符:

 DECLARE @tab char(1) = CHAR(9) EXEC msdb.dbo.sp_send_dbmail @profile_name='donotreply' ,@recipients ='xx@x' ,@query= @query ,@subject= 'xx' ,@attach_query_result_as_file=1 ,@query_attachment_filename='xx.csv' ,@query_result_separator=@tab ,@query_result_no_padding=1 –trim ,@query_result_width=32767 –stop wordwrap

看起來這個答案已經發布了,我的錯: https : //stackoverflow.com/a/44315682/5758637

在一個過程中:

SELECT 
table.myColumn AS [sep=, 
myColumn]
, table.myCol2
, table.myCol3...

在“sep=,”之后的列別名內有一個正常的硬回車。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM