我将使用 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”已创建,但为空。
我做错了什么?
我将使用 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”已创建,但为空。
我做错了什么?
我运行了等效的命令:
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 字符。可能是一个更好的选择,因为您说您将进行调试。