使用 sp_send_dbmail(csv 文件)时设置分隔符

use*_*102 2 sql sql-server-2008

我有一个查询让我返回一个结果集,但是当我sp_send_dbmail用来向某人发送包含此结果集作为CSV 文件的电子邮件时,它以错误的格式在 excel 中打开!我知道我可以通过 excel 更正这种格式,但我不希望用户这样做!我希望他们能够打开文件,并且所有内容都以正确的格式显示。下面显示了我如何创建CSV 文件并将其通过电子邮件发送给某人(我也指定了分隔符,但它不起作用,我不知道为什么):

EXEC msdb.dbo.sp_send_dbmail 
@profile_name='TestProfile',
@recipients='Test@gmail.com',
@subject='Test message',
@body='This is a test.',

@query = 'Select firstName, LastName, Address, Score from TestData.dbo.Student',
@query_result_header = 0,
@exclude_query_output = 1,
@append_query_error = 1,
@attach_query_result_as_file = 1,
@query_result_separator = ',',
@query_result_width = 25,
@query_attachment_filename = 'Test.csv',
@query_result_no_padding = 1
Run Code Online (Sandbox Code Playgroud)

一旦CSV文件被接收并打开所有的数据在第一列表示,这是不想要的结果!

在此处输入图片说明

我的列表分隔符设置的屏幕截图

在此处输入图片说明

小智 5

我在这个问题上挣扎了几天,但终于让它起作用了

@query_result_separator =' ',成功了,它是 TAB 作为结果分隔符。

完整代码 EXEC msdb.dbo.sp_send_dbmail

              @profile_name ='MailProfile',
              @from_address = 'def@abc.com',
              @recipients = 'Abc@abc.com',
              @body = @varBody,
              @body_format = 'HTML',
              @execute_query_database ='MyDB',
              @query = @VarSQL,
              @attach_query_result_as_file = 1,
              @query_result_separator ='    ',
              @exclude_query_output =1,
              @query_result_no_padding=1,
              @query_result_header =1,
              @query_attachment_filename ='MyDB.csv'
Run Code Online (Sandbox Code Playgroud)