Jdbc 如何使用Java高效地从DB2数据库检索200万条记录?

Jdbc 如何使用Java高效地从DB2数据库检索200万条记录?,jdbc,db2,large-data,Jdbc,Db2,Large Data,我需要使用Java从Db2数据库中检索和处理大约200万条记录。我们正在将表从一个db迁移到另一个db,因此我尝试在两个表之间进行差异,以检查数据中是否存在任何差异 目前,我正在做一个普通的查询,将数据放入resultset,并使用HashMap进行处理。但这需要永远的过程。我确实尝试将fetchsize设置为一个合适的值(200),但这也没有帮助 有没有其他更好的方法来检索数据,如获取数据块并对其进行处理?实现“检查数据是否存在差异”的一个简单方法是以相同的格式从两个表中导出数据,并使用您最喜

我需要使用Java从Db2数据库中检索和处理大约200万条记录。我们正在将表从一个db迁移到另一个db,因此我尝试在两个表之间进行差异,以检查数据中是否存在任何差异

目前,我正在做一个普通的查询,将数据放入resultset,并使用HashMap进行处理。但这需要永远的过程。我确实尝试将fetchsize设置为一个合适的值(200),但这也没有帮助


有没有其他更好的方法来检索数据,如获取数据块并对其进行处理?

实现“检查数据是否存在差异”的一个简单方法是以相同的格式从两个表中导出数据,并使用您最喜欢的文件差异程序

在windows环境中,我通常使用记事本++或Windiff来实现这一点

如果您不能使用这种策略,那么在数据库引擎中比较它们将是一个非常好的第二选择。在新数据库中创建该表的副本,并编写一个简单的SQL脚本来为您搜索差异。我喜欢使用一个完整的外部联接,返回一个或另一个边为空的行

select a.*, b.*
from a 
full outer join b
on a.key1 = b.key1
and a.otherkeys = b.otherkeys
where a.key1 is null 
   or b.key1 is null
从旧数据库导出函数/批处理(jaxb) ->创建XML文件-->
将函数/批处理(hibernate)从XML导入新数据库

您的查询是什么样子的?是的,你可能会将其并行化(例如,or)。我正在做一个带有连接的“select*”。我在执行结果集之前和之后添加了一个时间戳日志。正如我看到的,将数据放入resultset需要3秒钟的时间,但我将每行的每一列值追加,并将其作为一个键插入hashmap。我在目标hashmap中检查sourcekey和viceversa,如果找到匹配项,则删除该键。在那里,我将以不同的数据结束。它对500K记录运行良好。你知道你的瓶颈在哪里吗?您是否分析了您的程序执行情况?一般来说,处理200万条记录的最有效方法不是检索它们,而是在数据库中处理它们,例如,在两个数据库之间建立联合。