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

Sql server 将数据从SQL动态导出到文本文件,sql-server,tsql,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

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

我甚至尝试创建文件并硬编码名称,但都没有用。
非常感谢您的帮助。

请检查您的SQL是否具有访问C:的权限。
通过尝试从C:\

上的SSMS备份某些内容,可以轻松完成此操作。请检查您的SQL是否具有访问C:的权限。
通过尝试从C:\

上的SSMS备份某些内容,可以轻松完成此操作。您正在指定用于指定输入文件的
-i
标志。 因此,该命令被解释为“使用输入文件'”,这当然不存在


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

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

bcp "Select * from TableName" queryout "OutputFilename" -d "DatabaseName" -T -n
其中,
TableName
是表的名称,
OutputFilename
是完整路径+文件名,
DatabaseName
是实际的数据库。这假定有可信连接(
-T
),本地服务器(未放入
-S
开关),并自动为输出列选择格式(
-n


希望对您有所帮助。

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


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

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

bcp "Select * from TableName" queryout "OutputFilename" -d "DatabaseName" -T -n
其中,
TableName
是表的名称,
OutputFilename
是完整路径+文件名,
DatabaseName
是实际的数据库。这假定有可信连接(
-T
),本地服务器(未放入
-S
开关),并自动为输出列选择格式(
-n


希望这能有所帮助。

权利很好。先检查一下,没问题。先检查一下,谢谢。它确实有用。现在的问题是:错误=[Microsoft][SQL Server Native Client 10.0]无法打开BCP主机数据文件。我已授予文件夹完全访问权限。您确定从服务器的角度来看该路径存在吗?嗯。您是否可以编辑您的问题以包含正在生成的bcp命令(还有,您是否尝试在命令行上执行此命令),以便我们可以查看?我已通过在服务器上的命令提示符下运行该命令找到问题。这是驱动器上的空间问题。我简直不敢相信。非常感谢你的帮助。:)总是你最后检查的东西!很高兴它起作用了。谢谢。它确实有用。现在的问题是:错误=[Microsoft][SQL Server Native Client 10.0]无法打开BCP主机数据文件。我已授予文件夹完全访问权限。您确定从服务器的角度来看该路径存在吗?嗯。您是否可以编辑您的问题以包含正在生成的bcp命令(还有,您是否尝试在命令行上执行此命令),以便我们可以查看?我已通过在服务器上的命令提示符下运行该命令找到问题。这是驱动器上的空间问题。我简直不敢相信。非常感谢你的帮助。:)总是你最后检查的东西!很高兴它起作用了。