我正在使用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),它就会成功,没有任何问题。这有什么不对?
答案 0 :(得分:1)
当您(或DataStudio)运行SYSPROC.ADMIN_CMD(这是DataStudio用于导入的默认方法)时,使用Db2-instance-owner的帐户(对于Db2-LUW)在Db2服务器上执行操作。
该帐户(例如db2inst1)需要对指定文件名的读访问权。在您的情况下,Db2实例所有者无权访问该文件(和/或包含该文件的路径),因此抛出了异常。
您可能会在Db2服务器诊断文件(db2diag.log)中看到失败操作的其他详细信息,具体取决于Db2服务器上处于活动状态的诊断级别。
答案 1 :(得分:0)
ADMIN_CMD
期望输入文件在服务器上,因为它(与任何其他存储过程一样)在服务器上运行;它无法访问您的本地文件系统。
您在Db2命令行处理器中运行的命令在客户端上执行,因此可以在本地访问该文件。