我想发送一封包含查询结果的电子邮件作为csv附件。
到目前为止,我有这个;
EXEC msdb.dbo.sp_send_dbmail
@recipients='me@myself.com',
@subject='CSV Extract',
@profile_name = 'Valid profile',
@body='See attachment',
@query ='SELECT TOP 10 c.* FROM MyDb.dbo.Customers c',
@attach_query_result_as_file = 1,
@query_attachment_filename = 'CSV_Extract.csv',
@query_result_separator = ','
我收到了带有csv附件的电子邮件,但当在Excel中打开时,结果的格式非常糟糕(eidogg.所有值都在一个单独的列中,并带有看似随机的缩进)
我应该怎么做才能得到一个格式正确的结果,列标题也正确?
编辑
我已经向查询添加了以下参数;
@query_result_width = 32767,
@query_result_no_padding = 1
这改善了很多事情,但我仍然得到每一个记录在一个单一的列时,在Excel中打开。如何将记录中的每个值放入它自己的列中?
这是我目前得到的;
这就是我想要的
2条答案
按热度按时间brjng4g31#
问题是Excel不理解列。要解决这个问题,您需要向Excel发送说明,解释csv文件。
指令必须是文件的第一部分,在数据之前,因此您必须为查询中包含Excel指令沿着所需实际名称的第一个字段创建别名
指令是“sep=,”,以确保excel能够理解逗号字段分隔符。
这些是最终的结果;
它并不完美(第二行很烦人),但对于我的目的来说,它确实足够好了
bqujaahr2#
也可以使用@query_result_separator = ' ',
制表符分隔符
替换@query_result_separator = ',',