如何将包含 1000 万条记录的巨大结果集转换为 Java 中的列表?

0 java resultset

我正在尝试将结果集提取到 a 中,Set以便我可以删除重复项并将其放在单独的表中以简化清理过程。

但是当我尝试使用它时:

while (rs.next()) {
    set.add(new ABC(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5),
        rs.getString(6), rs.getString(7), rs.getString(8), rs.getString(9), rs.getString(10),
        rs.getString(11), rs.getString(12), rs.getString(13), rs.getString(14), rs.getString(15),
        rs.getString(16), rs.getString(17), rs.getString(18), rs.getString(19), rs.getString(20),
        rs.getString(21), rs.getString(22), rs.getString(23), rs.getString(24), rs.getString(25),
        rs.getString(26)));
}
Run Code Online (Sandbox Code Playgroud)

100 万条记录后,Java 抛出系统开销 GC 错误?有什么替代方案吗?

Tim*_*sen 8

如果你最终想要的结果是一个新表,它的数据是原始表减去重复项,那么这个操作应该完全在你的数据库中处理,而不是在 Java 中:

CREATE TABLE newTable (col1 varchar(50), col2 varchar(50), ..., col26 varchar(50));
INSERT INTO newTable (col1, col2, ..., col26)
SELECT DISTINCT col1, col2, ..., col26
FROM originalTable;
Run Code Online (Sandbox Code Playgroud)