0

我正在使用 Data Studio 连接到 DB2 服务器。当我尝试在 Data Studio 中使用“导入实用程序”时,它成功并发出警告,结果显示没有记录插入到数据库中。导入向导正在生成以下 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),它会成功,没有任何问题。这里有什么问题?

4

2 回答 2

1

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

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

您可能会在 Db2-server 诊断文件 (db2diag.log) 中看到有关失败操作的其他详细信息,具体取决于 Db2-server 上活动的诊断级别。

于 2018-05-06T16:14:36.103 回答
0

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

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

于 2018-05-06T15:55:35.830 回答