【问题标题】:bcp utility outputs an empty filebcp 实用程序输出一个空文件
【发布时间】:2012-12-06 14:11:32
【问题描述】:
我将使用 bcp 实用程序来调试存储过程,因此我想将一些数据导出到文件中。
我对我的 SQL-Server 2005 进行了测试
DECLARE @SQL VARCHAR(8000)
SELECT @SQL = 'BCP "SELECT 1" QUERYOUT "D:\test.txt" -C -T'
EXEC MASTER..XP_CMDSHELL @SQL
我观察到文件“D:\test.txt”已创建,但为空。
我做错了什么?
【问题讨论】:
标签:
sql
sql-server
debugging
sql-server-2005
bcp
【解决方案1】:
我运行了等效的命令:
BCP "SELECT 1" QUERYOUT "c:\junk\test.txt" -C -T
输出似乎是一个空文件,直到我用十六进制编辑器查看它。在十六进制编辑器中我看到了这个:01 00 00 00
所以它以整数格式保存数值 1。我怀疑您希望第 2 行阅读:
SELECT @SQL = 'BCP "SELECT '1'" QUERYOUT "D:\test.txt" -C -T'
在这种情况下,您会在记事本中看到 1。在十六进制编辑器中你会得到:01 00 31
因为 '1' 是长度为 1 的字符串,十六进制值为 31,字符 1 的 ASCII 码。
编辑:
您还可以使用 -w 选项告诉 bcp 对所有输出使用 unicode 字符。可能是一个更好的选择,因为您说您将进行调试。