当前位置: 首页 > 知识库问答 >
问题:

使用JDBC时db2 load命令失败

东方栋
2023-03-14

我正在使用JDBC将数据从带分隔符的文件传输到db2数据库表。最初,我遇到了sqlcode=-104,sqlstate=42601,所以在进一步调试中,我发现了这个问题,它让我调用存储过程sysproc.admin_cmd。

我修改了调用并尝试运行过程版本,但仍然得到相同的错误:

com.ibm.DB2.jcc.am.sqlsyntaxerrorexception:DB2 SQL错误:sqlcode=-104,sqlstate=42601,sqlerrmc=client;load;from,driver=4.26.14 com.ibm.DB2.jcc.am.b7.a错误(B7.java:810)com.ibm.DB2.jcc.am.b7.a错误(B7.java:66)

我不知道到底哪里做错了。

CALL SYSPROC.ADMIN_CMD('LOAD CLIENT FROM "<PATH_TO_FILE>" OF DEL MODIFIED BY COLDEL0X09 INSERT INTO <SCHEMA_NAME>.<TABLE_NAME> NONRECOVERABLE')

我在db2命令提示符上运行LOAD命令,它没有出现任何问题。

Db2版本:11.5

共有1个答案

糜昌胤
2023-03-14

load client命令用于客户端工作站,而不是DB2服务器,因此sysproc.admin_cmd将拒绝客户端关键字。

存储过程在DB2服务器上执行,它不能访问存储在客户端工作站上的文件。

因此,在sysproc.admin_cmd存储过程的参数中提到的任何文件都必须与DB2服务器文件系统相关,并且必须是DB2实例所有者帐户可以访问(可读)的。

如果您的数据文件还没有位于DB2服务器上,那么首先将该文件复制到DB2服务器上,然后重试加载(或较慢的import)。

当DB2服务器上的DB2实例所有者可以访问数据文件而不是运行存储过程时,您还可以通过sysproc.admin_cmd运行import命令。

如果您的DB2版本是最新版本,您还可以考虑ingest命令,请参阅文档了解详细信息。

如果您的目标Db2-server已经是11.5或更高版本,那么它应该支持从外部表和远程外部表插入,并且由于插入是普通的SQL,那么您可以通过JDBC来实现。

除了以上这些,如果Db2-LUW都是Db2-LUW并且具有IP连接性,并且如果安全规则允许,大多数DBA都会安排Db2-server到Db2-server的直接传输,这就避免了将数据带到DB2之外的缓慢和不安全的业务。这不是一个方案编制问题,而是一个行政问题。

 类似资料:
  • 我目前正在处理这个android项目,它刚刚从eclipse移植到android Studio。使用android studio IDE构建APKs工作良好,但最近我想尝试使用terminal(mac osx)来构建APKs,但事情并不顺利。即使是最基本的命令 或 根本不起作用并且在同一点上不断失败。下面是错误的stacktrace

  • 尝试使用JDBC运行db2命令。下面是java代码和异常

  • 我正在尝试使用read.jdbc从Db2中提取数据以实现spark。无法在查询中传递UR字符串。 如何在spark jdbc读取中将隔离设置为UR。 这将失败,错误:com.ibm.DB2.jcc.am.sqlsyntaxerrorexception:DB2 SQL error:sqlcode=-199,sqlstate=42601,sqlerrmc=ur;fetch,)OFFSET LIMIT

  • 我试图生成和测试我的代码(如果有效)的cucumber - Maven报告,然后打开命令提示符。我尝试过“mvn干净”,这是构建成功。之后,我尝试了“mvn安装”并遇到了构建失败(显示错误)。 这是我的pom.xml:

  • 我使用android studio preview beta 4,打开project it build时从https://github.com/drklo/Telegram获得Telegram源代码,并出现以下错误: 我使用最新的NDK android-ndk-r16-beta1-windows-x86。add-application.mk的第100行中有错误,它是: 所以我使用的add-appl

  • 有人能帮我解决这个错误吗? 我把ADS放在我的项目中,当我尝试将我的项目构建到Android时,我得到了这个错误。 但是,如果我将ADS脱机,那么错误就会消失。 命令调用失败:Gradle 构建失败。C:/Program Files/Java/jdk1.8.0_45\bin\java.exe -classpath “E:\unity 5\Editor\Data\PlaybackEngines\An