我将使用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”已创建,但为空 我做错了什么?
答案 0 :(得分: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'是十六进制值为31的字符串长度1,所以字符为1的ASCII码。
修改强>
您还可以使用 -w
选项告诉bcp对所有输出使用unicode字符。可能是一个更好的选择,因为你说你将要调试。