在 DB2 中导入数据失败

Import data fails in DB2

我正在使用 Data Studio 连接到 DB2 服务器。当我尝试在 Data Studio 中使用 'import utility' 时,它成功并发出警告,结果显示没有记录已插入数据库。导入向导正在生成以下 SQL 命令

CALL SYSPROC.ADMIN_CMD( 'IMPORT FROM "/home/xyz/backup/TRANSACTION" OF DEL MODIFIED BY coldel| delprioritychar  INSERT INTO S.TRANSACTION' );

如果我复制此命令并将其粘贴到 DB2 中的 sql 脚本中,然后 运行 它会给出另一个错误

An I/O error (reason = "sqlofopn -2029060079") occurred while opening the input file.. SQLCODE=-3030, SQLSTATE=

如果我使用 db2 shell 执行命令的 IMPORT 部分(没有 CALL SYSPROC.ADMIN_CMD),它会成功,没有任何问题。这里有什么问题?

ADMIN_CMD 期望输入文件在服务器上,因为它(与任何其他存储过程一样)运行 在服务器上;它无法访问您的本地文件系统。

您在 Db2 命令行处理器中 运行 在客户端执行的命令,因此可以在本地访问文件。

当您(或 DataStudio)运行 SYSPROC.ADMIN_CMD(这是 DataStudio 用于导入的默认方法)时,该操作使用 Db2-instance-owner 的帐户在 Db2-server 上发生(对于Db2-LUW)。

该帐户(例如 db2inst1)需要对指定文件名的读取权限。在您的情况下,Db2 实例所有者无权访问该文件(and/or 包含该文件的路径),因此引发了异常。

您可能会在 Db2 服务器诊断文件 (db2diag.log) 中看到有关失败操作的更多详细信息,具体取决于 Db2 服务器上处于活动状态的诊断级别。