动态地将数据从SQL导出到文本文件

时间:2013-11-06 10:30:10

标签: sql-server tsql

我想知道如何使用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:无法打开输入文件:没有这样的文件或目录

我甚至尝试创建文件并硬编码名称,但无济于事。 任何帮助将不胜感激。

2 个答案:

答案 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

希望有所帮助。