【问题标题】:Export to CSV in stored procedure in SQL Server 2008在 SQL Server 2008 的存储过程中导出为 CSV
【发布时间】:2015-12-17 23:09:42
【问题描述】:

我有一个存储过程,它创建一个临时表并拥有大量数据。我已经尝试了以下两种方法。我可以使用导出实用程序或结果到文件设置手动执行此操作,但我想将代码嵌入到我的存储过程中,以便我可以安排批处理作业并忘记它。此外,出于多种原因,我不想使用 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”附近的语法不正确。

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

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

【问题讨论】:

  • 您得到的确切错误信息是什么?
  • “queryout”附近的语法不正确。 'S' 附近的语法不正确。

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


【解决方案1】:

您看到“查询输出附近的语法不正确”。那是一条 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 年。

【讨论】:

  • 谢谢 Joreon,我相信这会起作用,因为现在我得到了链接中列出的所有错误。糟糕的是,我的 DBA 不允许我访问该命令 :( 回到 ssis
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-26
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-15
  • 1970-01-01
相关资源
最近更新 更多