【问题标题】:Export SQL result to csv through sp_send_dbmail通过 sp_send_dbmail 将 SQL 结果导出到 csv
【发布时间】:2022-01-06 10:47:55
【问题描述】:

我正在尝试创建一个通过电子邮件将 SQL 结果作为 CSV 附件发送的作业。 我设法通过以下代码做到这一点:

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'main',  
@recipients = 'test@email.com',  
@body = 'test',
@query = 'SELECT column1, column2, column3 FROM DB.dbo.Table',
@attach_query_result_as_file = 1,
@query_attachment_filename = 'Test.csv',
@query_result_header = 1,
@query_result_width = 256,
@query_result_separator = ',',
@exclude_query_output = 1,
@append_query_error = 1,
@query_no_truncate = 0,
@query_result_no_padding = 1,
@subject = 'Test';

但是,我有两个问题:

  • 它们都在一列中,用逗号分隔,而不是 3 列。
  • 在包含破折号的列标题之后有一个额外的行。

当前 CSV 文件:

所需的 CSV 文件:

任何帮助将不胜感激:)

谢谢!

【问题讨论】:

    标签: sql export-to-csv sp-send-dbmail


    【解决方案1】:

    所以,我刚刚找到了我自己问题的答案。

    显然,我必须在包含“sep=,”的文件顶部插入一个新行。这会强制 Excel 理解它是一个逗号分隔的文件,并确保它能够正确打开。

    您可以更改第一列的名称以包含此标题文本。我们只需将“Column1”重命名为“sep=,{CR}{LF}Column1”。然后当 dbmail 打印出文件中的列标题时,Column1 名称将分成两行,以“sep=,”开头。

    Excel 将第一行视为指令并且不显示它,只是使用它来确保它正确格式化数据。

    详情请看:https://www.purplefrogsystems.com/blog/2014/04/excel-doesnt-open-csv-files-correctly-from-sp_send_dbmail/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-02
      • 2016-11-10
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多