如何解决将数据加载到远程 DB2 服务器时出错
我是 Db2 的新手。我正在尝试使用基于 Java 的应用程序将数据从远程 Db2 服务器 A 发送到远程 Db2 服务器 B。我能够从服务器 A 获取数据并将其存储在控制/数据文件中;但是当我尝试将数据发送到服务器 B 时,出现以下异常。
com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-104,SQLSTATE=42601,SQLERRMC=EXTERNAL;T_DATA SELECT * FROM;<table_expr>,DRIVER=4.26.14
控制文件有命令:
INSERT INTO <TABLE_NAME> SELECT * FROM EXTERNAL '<PATH_TO_DATAFILE>'
USING (DELIMITER '\t' FORMAT TEXT SOCKETBUFSIZE 100 REMOTESOURCE 'JDBC')
数据文件包含记录,其中每个值由每个记录的制表符分隔。
服务器 A 和 B 都使用 Db2 v9.5
解决方法
失败是由于目标服务器 B 是不受支持的 Db2 (v9.5) 版本,无法理解外部表。因此,它在它不理解的令牌 EXTERNAL 上(正确地)报告了 sqlcode -104。
因此,对于您站点上可用的 Db2 版本,设计是不正确的。您只能在最新的 Db2-LUW 版本 (v11.5) 中使用外部表。
根据可用的工具,您可以使用命令(外部工具,而不是 SQL)从源导出数据,并将其加载到目标中。此外,如果服务器 A 和服务器 B 之间直接存在网络连接,那么管理员可以安排它们之间的联合,允许直接插入。
Db2 v9.5 还支持从游标加载和从远程游标加载(尽管存在问题,但在较新版本中早已修复)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。