0

我将使用 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”已创建,但为空。
我做错了什么?

4

1 回答 1

2

我运行了等效的命令:

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 字符。可能是一个更好的选择,因为您说您将进行调试。

于 2012-12-06T16:33:42.843 回答