代码之家  ›  专栏  ›  技术社区  ›  HHH

在DB2中导入数据失败

  •  0
  • HHH  · 技术社区  · 6 年前

    我正在使用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执行命令的导入部分(不调用SYSPROC.ADMIN\u CMD),那么它会成功,不会出现任何问题。这里怎么了?

    2 回复  |  直到 6 年前
        1
  •  1
  •   mao    6 年前

    当您(或DataStudio)运行SYSPROC时。ADMIN\u CMD(这是DataStudio用于导入的默认方法),该操作使用Db2实例所有者的帐户(对于Db2 LUW)在Db2服务器上执行。

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

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

        2
  •  0
  •   mustaccio Gandalf    6 年前

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

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