如何发送CSV格式的查询结果?(How to send a query result in CSV

2019-08-17 07:26发布

我工作的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

任何帮助将是非常赞赏。 提前致谢。

Answer 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可能清理结果的位。 全部关闭的参数,可以发现这里



Answer 2:

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


Answer 3:

添加

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

与结果解决问题

见来源



Answer 4:

紫色蛙这一评论表示您还可以使用制表符作为分隔符。

看起来也很喜欢这个答案一直贴已,我的坏: https://stackoverflow.com/a/44315682/5758637

(复制和粘贴的情况下,紫色青蛙链接在未来去死):

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


Answer 5:

里面一个PROC:

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

与列别名内后的正常硬回车“SEP =”。



文章来源: How to send a query result in CSV format?
标签: sql ssis