如何从SQL Server存储过程填充csv文件?

时间:2019-01-16 21:38:40

标签: sql sql-server csv tsql export-to-csv

如何从SQL Server存储过程填充.csv文件?

我们在服务器上没有Office。 .CSV文件必须从存储过程结果集中填充。

如何在不使用SSIS包的情况下导出到.CSV

最终结果,我将不得不通过将此CSV文件作为报告附加来生成电子邮件警报。

我将不得不使用大容量复制程序实用程序(BCP),我正在寻找BCP的示例以生成csv文件

4 个答案:

答案 0 :(得分:1)

有两种方法可以实现:

(1)使用OPENROWSET

尝试实现类似的逻辑:

INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=D:\;HDR=YES;FMT=Delimited','SELECT * FROM [FileName.csv]')
EXEC Sp_TEST

(2)使用bcp

在“参考”部分的第三个链接中:

  

queryout方法允许您从存储过程的结果中进行BCP,这带来了很多可能性,并提供了对文件格式的很多控制。除了简单的表提取以外,我倾向于使用此方法而不是视图。我还将格式化存储过程中的每一行。这意味着可以独立于文件创建来测试格式

declare @sql varchar(8000)
select @sql = 'bcp "exec sp_Test"
   queryout c:\bcp\sysobjects.csv -c -t, -T -S'
+ @@servername
exec master..xp_cmdshell @sql

参考

  1. How To Export Data To the .csv file using Sql server Stored Procedure.
  2. How to produce an csv output file from stored procedure in SQL Server
  3. Creating CSV Files Using BCP and Stored Procedures
  4. Exporting a csv file via stored procedure
  5. Writing select result to a csv file

答案 1 :(得分:0)

创建一个小脚本,csv是一种简单的格式:csv =逗号分隔值。用逗号分隔值的宽度。

答案 2 :(得分:0)

查看下面的代码。创建一个存储过程,然后将其用作BCP命令中的源。然后生成一个文本文件。链接的代码示例中讨论了定界符。

摘自Creating CSV Files Using BCP and Stored Procedures

的代码示例
use tempdb
go
create proc s_bcpMasterSysobjects
as
   select   '"' + name + '"'
            + ',' + '"' + convert(varchar(8), crdate, 112) + '"'
            + ',' + '"' + convert(varchar(8), crdate, 108) + '"'
   from master..sysobjects
   order by crdate desc
go
declare @sql varchar(8000)
select @sql = 'bcp "exec tempdb..s_bcpMasterSysobjects"
       queryout c:\bcp\sysobjects.txt -c -t, -T -S'
+ @@servername
exec master..xp_cmdshell @sql

答案 3 :(得分:0)

我会使用BCP

查看示例

declare @sql varchar(2000)
select @sql = 'bcp "SQL QUERY HERE" queryout '+@fileLocation+@fileName+'.csv -c -t, -T -S' + @@servername
    exec master..xp_cmdshell @sql, NO_OUTPUT    

如果您需要查看任何错误或正在做什么,只需删除", NO_OUTPUT"