gpt4 book ai didi

java - 在java中比较来自不同数据库的两个数据集(两个结果集)

转载 作者:行者123 更新时间:2023-11-30 07:41:48 24 4
gpt4 key购买 nike

我正在尝试通过 Java 比较来自不同数据库的两个数据集。源数据库:-oracle、sql、其他数据库。目标 db:Hive

我已经与两个数据库建立了 JDBC 连接,并在两个不同的结果集中获取了结果。

sourceData  
targetData

现在我想比较两个结果集并指出不同之处。我想的方法是将两个结果集都添加到 HashMap 中并进行比较。请让我知道我的方法是否正确,或者是否有更好的方法来做同样的事情。

请分享可以帮助我的链接。

提前致谢。

最佳答案

@Hades 提出的解决方案类似,而是使用 Set

创建一个 holder 类,它包含您希望比较的所有值并覆盖 equals()hashCode() :

class Data {
// the fields you wish to compare

// override hashCode

// override equals
}

创建 Set<Data> source, target; (如果行的顺序很重要,请使用 LinkedHashSet)并添加来自 ResultSet sourceData 的行至 source targetData 也一样.

然后你可以使用简单的Set操作。

  1. 这将保留 copy 中的所有元素发生在target :

    Set<Data> copy = new LinkedHashSet<>(source);
    copy.removeAll(target);
  2. 这将保留 copy 中的所有元素确实发生在target :

    Set<Data> copy = new LinkedHashSet<>(source);
    copy.retainAll(target);
  3. 这将创建 copy 中所有元素的并集和 target :

    Set<Data> copy = new LinkedHashSet<>(source);
    copy.addAll(target);

我创建了一个 copy因为这些操作会改变 Set ,这样(使用副本)你的 Set<Data> source将保持不变。

您还可以包装所有这些调用 removeAll() , retainAll()addAll()if -statement,它允许您直接执行某些操作。例如 removeAll() :

if(copy.removeAll(target)) {
// elements were removed from copy which were in target
} else {
// nothing was removed
}

关于java - 在java中比较来自不同数据库的两个数据集(两个结果集),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55586628/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com