在SQL Server 2008中的存储过程中导出为CSV

时间:2015-12-17 23:09:43

标签: sql sql-server sql-server-2008 csv

我有一个存储过程,可以创建临时表并拥有大量数据。我尝试了以下两种方法。我可以使用导出实用程序手动完成或结果到文件设置,但我想将代码嵌入我的存储过程中,以便我可以安排批处理作业并忘记它。我也不希望我们SSIS有很多原因。

我发现的热门解决方案是:

bcp "select * from WHSE.Customer" queryout ExcelTest.csv -t, -c -S . -d Server1 -T

SQLCMD -S . -d Server1 -Q “"select * from WHSE.Customer sp” -s “,” -o “d:\result.csv

在BCP中,它在BCP上出错,如果我在前面添加EXECUTE,我会收到错误:

  

'queryout'附近的语法不正确。

SQLCMDSQLCMD上的错误外,-S也是如此,具体取决于我是否使用Execute命令。

这似乎应该很简单,我已经找到了很多答案,但没有一个真正起作用。它似乎应该是世界上最基本的东西,基本上SELECT * INTO MYFILE.CSV FROM MYTABLE

1 个答案:

答案 0 :(得分:0)

您在queryout"附近看到"语法错误。这是一个T-SQL错误消息。正如您所说,您是在存储过程中运行它。 BCP和SQLCMD都是命令行实用程序,这意味着您必须从命令(DOS)提示符运行它们。

有一种方法可以直接从SQL执行,但您必须使用:xp_cmdshell这是一篇关于如何使用它的好文章:

https://www.mssqltips.com/sqlservertip/1633/simple-way-to-export-sql-server-data-to-text-files/

这是为SQL Server 2005编写的,但也适用于2008年。