Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何比较来自两个不同数据库的数据?_Java_Database - Fatal编程技术网

Java 如何比较来自两个不同数据库的数据?

Java 如何比较来自两个不同数据库的数据?,java,database,Java,Database,我正试图找到解决我问题的办法。问题陈述 我有两个不同的数据库的Oracle和AS400。这两个数据库具有相同的结构和相同的表(但表名明显不同) AS400通过互联网更新,Oracle通过商店或仓库更新 两个数据库每天都进行同步,同步后,我们需要每天生成一份报告,以了解数据中是否存在任何差异 需要从双方进行比较,首先从AS400获取数据,然后与Oracle DB进行比较,反之亦然 我们这里说的是1000万张唱片。第一次是对整个数据库进行比较,随后的报告将只对更改或新添加到数据库中的记录进行比较(这

我正试图找到解决我问题的办法。问题陈述

  • 我有两个不同的数据库的Oracle和AS400。这两个数据库具有相同的结构和相同的表(但表名明显不同)
  • AS400通过互联网更新,Oracle通过商店或仓库更新
  • 两个数据库每天都进行同步,同步后,我们需要每天生成一份报告,以了解数据中是否存在任何差异
  • 需要从双方进行比较,首先从AS400获取数据,然后与Oracle DB进行比较,反之亦然
  • 我们这里说的是1000万张唱片。第一次是对整个数据库进行比较,随后的报告将只对更改或新添加到数据库中的记录进行比较(这相当简单,易于处理),但第一次比较是我们试图实现的
  • 我知道ETL过程确实会使工作变得简单,但我们没有ETL工具,因此尝试使用Java找到解决方案。任何对我们有帮助的建议都非常感谢


    提前感谢。

    我从未使用过它,但Liquibase同时支持DB2和Oracle


    简单的方法是设置两个数据源,从每个存储中获取数据并进行比较

    当然,你的内存会被1000万条记录所占用,所以也许可以尝试批量抓取和比较数据(注意在这样做时发生的更新)


    如果您使用多线程,可能会获得进一步的性能增强如果您担心初始比较的内存消耗,为什么不考虑使用某种形式的记录数据散列呢。假设有一个合适的主键(比如长键)和SHA-1摘要,这意味着每个记录4+20=24字节,或者每个数据库大约200 Mb

    两个数据库每天都进行同步,同步后,我们需要每天生成一份报告,以了解数据中是否存在任何差异

    根据同步的完成方式,您可能只需要获取Oracle数据库和AS400数据库的每日事务输入。处理这些日常事务文件要比处理整个数据库快得多

    如果没有日常事务文件,那么这是您的第一步。创建每日事务文件。

    1)在Java中使用Joda库,在Java中使用日期算法将轻而易举。2) 使用批处理获取记录,在数据库上的命中率将最小。@BBBZone两个数据库每天都进行同步,同步后,我们需要每天生成一份报告,以了解数据中是否存在任何差异。-这句话需要稍加澄清。同步后,两个数据库将具有相同的数据权限。AS400数据将在oracle中更新,oracle数据将在AS400中更新。那么,进行比较的必要性是什么呢。