我无法找到任何令人满意的解决方案,所以问这里。 我需要将两个大表(~50M)的数据与JAVA中的相同模式定义进行比较。 获取结果集对象时,我不能使用order by子句,并且两个表中的记录可能不一致。 任何人都可以帮助我做正确的方法吗?
答案 0 :(得分:0)
您可以将第一个DB表的数据提取到文本文件中,并在第二个表的resultSet上创建一个while循环。在迭代ResultSet时,对文本文件进行搜索/验证。如果你关注内存,这个解决方案是有效的。
如果没有,那么只需使用HashMap保存第一个表的数据并执行while循环,并从HashMap中查找第二个表的记录。
答案 1 :(得分:0)
这真的取决于'比较'的含义?您是否试图查看它们是否包含完全相同的数据?找到一个不在另一个中的行?查找具有不同值的相同主键的行?
另外,为什么你必须在Java中这样做?无论您想要做什么,使用SQL都可能更容易。
在Java中,您需要创建一个表示表的主键的类,以及第二个表示其余数据的clas,其中还包括主键类。如果您只有一列作为主键,那么这更容易。
我们将P称为主键类,其余为D。
Map map = new HashMap(); 从第一个表中选择所有行,然后将它们插入到哈希映射中 查询第二个表中的所有行。 对于每一行,创建一个P对象 使用它来查看具有相同Key的第一个表中的数据 现在您知道两个表是否包含相同的行,并且您可以比较两个表中的非键值。
就像我说的,这在直接SQL中要容易得多 您基本上在两个表之间进行完全外连接。加入的确切程度取决于您正在尝试做什么。