我想知道如何使用xp_cmdshell bcp方法将数据从select命令导出到MSSQL的普通文本文件。
我正在使用SQL 2012,我的代码如下所示:
Declare @filename varchar(50),
@cmd varchar(4000),
@file varchar(100)
set @filename = 'TestMe'
set @file = 'c:\' + @FileName + '.txt'
set @cmd = 'bcp "Select * from TableName" queryout"'
set @cmd = @cmd + @file + '" -T -is'
EXEC xp_cmdshell @cmd
查询执行成功,但是它给了我一个输出结果:
bcp:无法打开输入文件:没有这样的文件或目录
我甚至尝试创建文件并硬编码名称,但无济于事。 任何帮助将不胜感激。
答案 0 :(得分:2)
检查您的SQL是否有权访问C:。 这可以通过尝试在C:\
上从SSMS备份某些内容来轻松完成答案 1 :(得分:2)
您正在指定用于指定输入文件的-i
标志。
因此,该命令被解释为“使用输入文件”,当然不存在......
您正在指定用于指定输入文件的-i
标志。
因此,该命令被解释为“使用输入文件”,当然不存在......
仅供参考,您的BCP命令应如下所示:
bcp "Select * from TableName" queryout "OutputFilename" -d "DatabaseName" -T -n
其中TableName
是表的名称,OutputFilename
是完整路径+文件名,DatabaseName
是实际数据库。假设为Trusted connection(-T
),本地服务器(未放入-S
开关),并自动选择输出列的格式(-n
)
希望有所帮助。