【问题标题】:Export data from SQL to text file dynamcally将数据从 SQL 动态导出到文本文件
【发布时间】:2013-11-06 10:30:09
【问题描述】:

我想知道如何使用 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-server tsql


    【解决方案1】:

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

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

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

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

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

    希望对您有所帮助。

    【讨论】:

    • 谢谢。它确实有帮助。现在的问题是它说:Error = [Microsoft][SQL Server Native Client 10.0]Unable to open BCP host data-file。我已授予文件夹完全访问权限。
    • 从服务器的角度确定路径存在吗?
    • 嗯。您能否编辑您的问题以包含正在生成的 bcp 命令(另外,您是否尝试在命令行上执行此命令)以便我们查看?
    • 我已经设法通过在命令提示符下在服务器上运行它来找到问题所在。这是驱动器上的空间问题。我简直不敢相信。非常感谢您的帮助。
    • :) 始终是您检查的最后一件事!很高兴它的工作。
    【解决方案2】:

    检查您的 SQL 是否有权访问 C:。 这可以通过尝试在 C:\

    上尝试从 SSMS 备份某些内容来轻松完成

    【讨论】:

    • 权利很好。先检查一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    相关资源
    最近更新 更多