[英]How to produce an csv output file from stored procedure in SQL Server
[英]How to populate csv file from SQL Server stored procedure?
如何从SQL Server存储过程填充.csv
文件?
我们在服务器上没有Office。 必须从存储过程结果集中填充.CSV
文件。
如何不使用SSIS包导出到.CSV
?
最终结果,我将必须通过将此CSV文件作为报告附加来生成电子邮件警报。
我将不得不使用大容量复制程序实用程序( BCP
),我正在寻找BCP的示例以生成csv文件
有两种方法可以实现:
尝试实现类似的逻辑:
INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=D:\;HDR=YES;FMT=Delimited','SELECT * FROM [FileName.csv]')
EXEC Sp_TEST
在“参考”部分的第三个链接中:
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
看下面的代码。 创建一个存储过程,然后将其用作BCP命令中的源。 然后生成一个文本文件。 链接的代码示例中讨论了定界符。
从使用BCP和存储过程创建CSV文件中获取的代码示例
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
我会用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"
创建一个小的脚本,csv是一种简单的格式:csv =逗号分隔值。 用逗号分隔值的宽度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.