【问题标题】:Pass Query Result to a csv file and Send it as attachement using SQL Server 2005将查询结果传递给 csv 文件并使用 SQL Server 2005 将其作为附件发送
【发布时间】:2009-04-02 13:12:43
【问题描述】:

我有两个任务,因为我是新手,所以我需要一些大师的帮助/建议。

我需要做的是将 q select 查询的结果发送到一个 csv 文件,该文件可以将分隔符作为逗号或制表符,然后将此文件作为附件发送给特定的收件人。

希望得到一些好的建议

【问题讨论】:

    标签: sql-server stored-procedures


    【解决方案1】:

    您可以使用 SQL Server Integration Services (SSIS) 轻松完成此操作。从查询复制到平面 (CSV) 文件的数据流任务,然后是通过电子邮件发送平面文件的任务。

    【讨论】:

      【解决方案2】:

      SSIS 可能是要走的路,但如果你想让 T-SQL 来做,试试这个..

      我不会为你写完整的程序,但这里是要点......

      确定分割字符:

      SET @CSV=',' --use CHAR(9) for tab
      

      一次一行地构建您的 CSV 字符串,循环遍历结果(对每一行执行此操作):

      SET @FileMessage=ISNULL(CONVERT(varchar(10),column1),'')+@CSV+ISNULL(CONVERT(varchar(10),column2),'')
      SET @ExecuteString = RTRIM('echo ' + @FileMessage + ' >>' + @FileName)
      --append it to you file, you'll need write permissions
      EXEC @ReturnValue=master..xp_cmdshell @ExecuteString, no_output
      

      真正发送邮件,文件完全构建后:

      EXEC xp_sendmail { [ @recipients= ] 'recipients [ ;...n ]' } 
           [ ,[ @message= ] 'message' ] 
           [ ,[ @query= ] 'query' ] 
           [ ,[ @attachments= ] 'attachments [ ;...n ]' ] 
           [ ,[ @copy_recipients= ] 'copy_recipients [ ;...n ]'
           [ ,[ @blind_copy_recipients= ] 'blind_copy_recipients [ ;...n ]'
           [ ,[ @subject= ] 'subject' ]
           [ ,[ @type= ] 'type' ] 
           [ ,[ @attach_results= ] 'attach_value' ]
           [ ,[ @no_output= ] 'output_value' ] 
           [ ,[ @no_header= ] 'header_value' ] 
           [ ,[ @width= ] width ] 
           [ ,[ @separator= ] 'separator' ] 
           [ ,[ @echo_error= ] 'echo_value' ] 
           [ ,[ @set_user= ] 'user' ] 
           [ ,[ @dbuse= ] 'database' ]
      

      【讨论】:

        【解决方案3】:

        SSIS 将是您的最佳选择。查看此链接,了解如何将数据从 csv 文件传输到 SQL:Import Data From CSV

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-01-03
          • 1970-01-01
          • 1970-01-01
          • 2011-03-11
          • 2017-10-21
          • 2020-03-20
          • 1970-01-01
          相关资源
          最近更新 更多