Sql 如何以CSV格式发送查询结果?

Sql 如何以CSV格式发送查询结果?,sql,ssis,Sql,Ssis,我正在研究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

我正在研究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\u result\u分隔符应该可以

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\u result\u no\u padding=1
可能会稍微清理结果。可以在添加中找到所有非参数

'[sep=,' + CHAR(13) + CHAR(10) ColumnName] 
结果解决了这个问题

请参见

指示您也可以使用制表符作为分隔符:

看起来这个答案已经发布了,我的错:

在一个进程中:

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

如果在“sep=,”之后的列别名中有一个普通的硬回车符,那么为什么不根据需要使用SSIS的功能来创建CSV文件和
发送邮件任务来发送电子邮件呢。这是唯一的方法。我在下面添加了一个答案,该答案应将查询结果格式化为CSV,并添加了有关sp_send_dbmail sp的更多信息。如果这对你有用,你能接受答案吗?嘿,谢谢:-)我得到了我想要的。非常感谢。带有@attach\u query\u result\u as\u file=1的行的末尾需要一个逗号,否则代码将抛出错误。请注意,这些结果将不会正确设置为CSV格式(转义)。如果您的任何字段包含带有逗号的数据,您会遇到麻烦。此答案与在MS Excel中打开CSV文件不兼容。分隔符不够,但需要将CSV文件第一行中的分隔符指定为
sep=,
。否则,所有列将显示在MS Excel.FWIW的一列中,我发现如果您的数据包含逗号,那么如果您设置
@temp=char(9)
并使用sp_send_dbmail参数:
@query\u result\u separator=@temp您将拥有一个以制表符分隔的文件。无论如何,请使用“.csv”扩展名保存它,Excel将在双击时打开文件(而不必打开Excel,然后打开或导入文件并将字段映射到列或指定分隔符)。在@query定义中使用NOCOUNT是个好主意+1在过程中:
选择table.myColumn作为[sep=,myColumn]
,并在列别名中使用正常硬返回。
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 
SELECT 
table.myColumn AS [sep=, 
myColumn]
, table.myCol2
, table.myCol3...