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