java - 跨 DB2 和 Oracle 数据库连接信息最佳实践

标签 java sql oracle db2

我们正在设计一个相当大的棕地应用程序,并遇到了一些问题。

我们在 DB2 数据库中拥有来自仍在加载数据的遗留应用程序的大量信息。我们还拥有我们控制的 Oracle 数据库中的信息。

我们必须对表执行“JOIN”类型的操作。现在,我正在考虑将 DB2 表中的信息提取到 List<> 中,然后将这些信息迭代到 Oracle 数据库上的 SQL 语句中,例如:

select * from accounts where accountnum in (...)

有没有更简单的方法在数据库之间进行交互,或者至少,这种操作的最佳实践是什么?

最佳答案

我用两种方法做到了这一点。

在不同的机器上有两个 Sybase 数据库,我设置了存储过程,然后调用类似的函数来来回发送数据。这还允许存储过程进行审核/记录,以说服客户在此过程中没有数据丢失。

在从 Oracle 到 Sybase 的一种方式中,我使用一个 View 来编码数据以及从 C++ 程序调用的每个供应商的 C 库,该程序为 C API 提供了通用接口(interface)。

在 MySQL 和 DB2 设置中,就像您的情况一样,Db2 是“遗留但活跃的”,我采用了与您所描述的类似的设置:将数据提取到(Java)客户端程序中。

如果连接始终是一对一的,并且每个框的结果集具有相同的键,则您可以使用相同的顺序拉取它们,并在客户端中轻松连接它们。即使它们是一对多,将它们拼接在一起也只是两个列表的单向迭代。

如果它是多对多,那么我可能会回退到一次处理一项(尽管您可以使用 HashSet 查找)。

不过,基本上,您的选择是存储过程(为此您需要和客户端层),或者只是在客户端中执行。

关于java - 跨 DB2 和 Oracle 数据库连接信息最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/713976/

相关文章:

sql - 数据库索引: why pairing

java - 为什么 Tomcat 找不到我的 Web 应用程序?

java - Selenium Webdriver - 无法从列表框中选择选项

sql - 如何在postgresql的全文搜索中找到相似的词?

SQL表主键设置

c# - 如何使用单个连接执行两个 command.ExecuteNonQuery() 方法?

java - 如何在android中获取字符串数组

java - Spring boot userRepository.findAll() 显示太多次并导致 stackoverflow 错误

mysql - SQL 左连接与 SUM

oracle - PL/SQL 检查日期是否有效