bcp文件怎么打开

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bcp文件怎么打开相关的知识,希望对你有一定的参考价值。

BCP 问题的来源

打开 BCP 文件过程中所遇到的常见问题

缺少 Adobe Photoshop

双击你的 BCP 文件会提示消息 “%%os%% 无法打开 BCP 文件”。 如果是这样,这通常意味着你没有为 %%os%% 安装 Adobe Photoshop。 您的操作系统无法将 BCP 与 Adobe Photoshop 关联,因此双击该文件将无法正常工作。

提示: 如果您知道另一个可以打开您的 BCP 文件的程序,您可以尝试通过从列出的程序中选择应用程序来打开它。

Adobe Photoshop 的过时版本

有时,你可能安装了与BlackMagic Custom Palette类型不兼容的过时版本的 Adobe Photoshop。 如果您没有正确的版本,则需要下载更新版本的 Adobe Photoshop。 出现此问题的主要原因是,BlackMagic Custom Palette 文件版本是由更新版本的 Adobe Photoshop 创建的,而不是你在电脑上安装的版本。

提示: 您有时可以通过右键单击 BCP 文件,选择 “属性” 并查看版本信息来获得有关正确程序版本的提示。

摘要: 在任何一种情况下,难以打开 BCP 文件的大多数问题都与您的计算机上没有安装正确的软件应用程序有关。

其他 BCP 文件问题

即使安装了正确版本的 Adobe Photoshop,打开 BCP 仍然会遇到困难。 在打开 BCP 时,%%os%% 内部可能会有外部问题导致这些错误。 这些其他问题包括(按最常见到最不常见的顺序列出): BCP 的 Windows 注册表中的文件参考是错误的

意外删除 Windows 注册表中 BCP 文件的描述

BCP 程序的安装有缺陷,例如 Adobe Photoshop

影响 BCP 文件的文件损坏

BCP 感染了病毒

与 BCP 相关的硬件有设备驱动程序损坏

Windows 没有足够的资源来打开你的BlackMagic Custom Palette文件
参考技术A 可以直接用电脑上的程序直接打开,选择对应的文件,然后左键双击打开即可。

无法打开 BCP 主机数据文件

【中文标题】无法打开 BCP 主机数据文件【英文标题】:Unable to open BCP host data-file 【发布时间】:2013-09-08 06:26:59 【问题描述】:

以下是 BCP 声明的示例。 我不习惯使用 BCP,因此非常感谢您的帮助和坦率

我也将它与格式文件一起使用。

如果我从 CMD 提示符执行它工作正常,但从 SQL 我得到错误。 BCP 语句都在一行中,并且 SQL Server 代理作为本地系统运行。 SQL 服务器和脚本在同一个系统上。

我运行了 exec master..xp_fixeddrives C,45589 电子,423686

我试过输出到 C 和 E 的结果相同

EXEC xp_cmdshell 'bcp "Select FILENAME, POLICYNUMBER, INSURED_DRAWER_100, POLICY_INFORMATION, DOCUMENTTYPE, DOCUMENTDATE, POLICYYEAR FROM data.dbo.max" queryout "E:\Storage\Export\Data\max.idx" -fmax-c.fmt -SSERVERNAME -T

这里是格式文件rmax-c.fmt

10.0

7

1      SQLCHAR             0       255     "$#Y#$"          1     FILENAME                               
2      SQLCHAR             0       40      ""               2     POLICYNUMBER                                 
3      SQLCHAR             0       40      ""               3     INSURED_DRAWER_100                           
4      SQLCHAR             0       40      ""               4     POLICY_INFORMATION                           
5      SQLCHAR             0       40      ""               5     DOCUMENTTYPE                                 
6      SQLCHAR             0       40      ""               6     DOCUMENTDATE                                 
7      SQLCHAR             0       8       "\r\n"           7     POLICYYEAR    

由于在这篇文章中进行了格式化,格式文件的最后一列被截断,但在该文档日期之外的每一列中读取SQL_Latin1_General_CP1_CI_AS

【问题讨论】:

【参考方案1】:

如果它在命令行中运行但不能从 SQL 代理运行,我认为这是一个身份验证问题。

SQL Server 代理正在一个帐户下运行。确保该帐户具有读取格式文件和生成输出文件的能力。

另外,请确保该帐户能够执行 xp_cmdshell 存储过程。

写下你的进度...

【讨论】:

我可能说得太早了,我从 CMD 再次尝试,我得到了同样的错误。我确认我的本地系统有权访问输出文件,但我无法在任何地方找到格式文件。一旦我重新创建了格式文件,它在 CMD 中运行良好,但仍然不能从 SQL 中运行。代理作为本地系统运行,但我也尝试使用我登录的帐户,我得到了相同的结果。我也尝试在 SP 中执行,但遇到了同样的错误。 我明白了!由于我指定了 BCP.exe 的位置,我想我会尝试将 .fmt 文件移动到我从“C:\Program Files\Microsoft SQL Server\100\Tools\Binn\”执行 BCP 的同一位置工作。非常感谢。【参考方案2】:

首先,通过简单的 'dir c:*.*' 排除 xp_cmdshell 问题;

查看my blog,了解如何使用 BCP 导出文件。

我的系统出现问题,无法找到 BCP.EXE 的路径。

要么改变硬编码的PATH变量。

以下示例适用于 Adventure Works。

-- BCP - Export query, pipe delimited format, trusted security, character format
DECLARE @bcp_cmd4 VARCHAR(1000);
DECLARE @exe_path4 VARCHAR(200) = 
    ' cd C:\Program Files\Microsoft SQL Server\100\Tools\Binn\ & ';
SET @bcp_cmd4 =  @exe_path4 + 
    ' BCP.EXE "SELECT FirstName, LastName FROM AdventureWorks2008R2.Sales.vSalesPerson" queryout ' +
    ' "C:\TEST\PEOPLE.TXT" -T -c -q -t0x7c -r\n';
PRINT @bcp_cmd4;
EXEC master..xp_cmdshell @bcp_cmd4;
GO

在将 SQL Server 2012 的路径更改为 \110\ 并将数据库名称更改为 [AdventureWorks2012] 之前,我收到以下错误。

进行更改后,代码在 SSMS 中运行良好。该服务在 NT AUTHORITY\Local Service 下运行。 SQL Server 代理已禁用。输出文件已创建。

【讨论】:

我按照您的建议通过硬编码路径修改了代码,但我得到了同样的错误。无法打开主机数据文件。 你能把实际错误的屏幕截图粘贴到帖子上吗? EXEC后能不能打印@@ERROR看看有没有错误码? 另外,你能看看你正在使用的目录和文件的权限吗?上面的示例是否适用于您的环境。 更多建议: 1 - 更改文件名。使用减号可能是个问题。 2 - 为什么输出中没有分隔符?将 "$#Y#$" 更改为 "," 并更改 "" 以查看这是否是一个问题。这是权限或命令问题。无法判断手头是否有数据库。 我明白了!由于我指定了 BCP.exe 的位置,我想我会尝试将 .fmt 文件移动到我从“C:\Program Files\Microsoft SQL Server\100\Tools\Binn\”执行 BCP 的同一位置工作。非常感谢。【参考方案3】:

请检查,该文件可能已在其他应用程序或程序中打开。 如果是这种情况,bcp.exe 无法覆盖现有文件内容。

【讨论】:

为输出文件创建一个唯一的名称确实解决了这个问题。测试文件 c:\csv\export20150415.csv 已经存在,删除旧测试文件/更改新文件名解决了它。【参考方案4】:

输出路径是否存在? BCP 在尝试创建文件之前不会创建文件夹。

在调用 BCP 之前试试这个:

EXEC xp_cmdshell 'MKDIR "E:\Storage\Export\Data\"'

【讨论】:

【参考方案5】:

从你的命令中删除 no_output,如果你使用一个offcourse

SET @sql = 'BCP ....'

EXEC master..xp_cmdshell @sql , no_output

EXEC master..xp_cmdshell @sql

【讨论】:

【参考方案6】:

就我而言,我通过以下方式解决了这个问题:

我的命令是:

bcp "select Top 1000 * from abc.dbo.abcd" queryout FileNameWithDirectory -c -t "|" -r "0x0a" -S 192.111.1.111 -U xx -P xxxxx

我的 FileNameWithDirectory 太长。喜欢"D:\project-abc\R&D\abc-608\FilesNeeded\FilesNeeded\DataFiles\abc.csv"

我更改为一个更简单的目录,例如:"D:\abc.csv"

问题解决了。

所以我猜这个问题是由于文件名超出。因此找不到该文件。

【讨论】:

【参考方案7】:

在我的情况下,这个修复只是在管理员模式下运行。

【讨论】:

【参考方案8】:

如果其他人遇到同样的问题:我有...lesPerson" queryout' 而不是...lesPerson" queryout '

【讨论】:

【参考方案9】:

如果您的代码正在写入数据文件,然后使用 BCP 读取它,请确保在尝试读取之前关闭数据文件

如果不这样做会给出:“无法打开主机数据文件”。

Python 示例:

# Management of temporary bulk insert file.

def openBulkInsertFile(self) :
    self.bulkInsertFile = open('c:/tmp/bulkInsertContent.txt', 'w', newline='')
    self.csvWriter = csv.writer(self.bulkInsertFile)

def closeBulkInsertFile(self) :
    self.bulkInsertFile.close()

【讨论】:

【参考方案10】:

我在共享我的输出文件夹后收到了这个,即使没有打开文件。

我为输出创建了一个新的非共享文件夹,一切都很好。 (可能会帮助某人;-))

【讨论】:

【参考方案11】:

此错误可能是由于对目标文件夹的写入权限不足。

这是一个常见问题,因为编写查询的用户可能有权访问文件夹,但实际调用 bcp.exe 的 SQL Server 代理或登录的服务器帐户可能没有。

【讨论】:

【参考方案12】:

目标路径必须已经存在(文件名除外)。

【讨论】:

【参考方案13】:

在 SQL 中使用 Job 时,使用 SQL Express 服务器的用户是当前登录的用户,您应该在 Batch 写入输出的文件夹中授予该用户写入权限。

这通常只发生在bcp 上,当使用type 命令时,所有权转到计算机(管理员)并且命令运行没有问题。

因此,如果您的工作中有较长的命令,只需查找 bcp 部分。

【讨论】:

以上是关于bcp文件怎么打开的主要内容,如果未能解决你的问题,请参考以下文章

无法打开 BCP 主机数据文件

BCP 导出数据的问题 老是不成功 SQL2005

bcp文件的参数含义

错误= [Microsoft] [SQL Server的ODBC驱动程序13]无法打开BCP主机数据文件

如何把TXT文件中的数据批量导入SQL sever 2000中?

从.bcp文件中获取信息