1

我想知道如何使用 xp_cmdshell bcp 方法将数据从选择命令导出到 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:无法打开输入文件 s:没有这样的文件或目录

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

4

2 回答 2

2

您正在指定-i用于指定输入文件的标志。因此,该命令被解释为“使用输入文件's'”,这当然不存在......

您正在指定-i用于指定输入文件的标志。因此,该命令被解释为“使用输入文件's'”,这当然不存在......

仅供参考,您的 BCP 命令应如下所示:

bcp "Select * from TableName" queryout "OutputFilename" -d "DatabaseName" -T -n

whereTableName是表的名称,OutputFilename是完整路径 + 文件名,DatabaseName是实际的数据库。这假定受信任的连接 ( -T)、本地服务器(未放入-S交换机),并自动选择输出列的格式 ( -n)

希望有帮助。

于 2013-11-06T11:03:30.667 回答
2

检查您的 SQL 是否有权访问 C:。这可以通过尝试从 C:\ 上的 SSMS 备份某些内容来轻松完成

于 2013-11-06T10:56:59.823 回答