【问题标题】:php or java comparing dataphp或java比较数据
【发布时间】:2016-11-12 01:31:32
【问题描述】:

我正在寻找一种方法来使用 php 或 java 来比较两个 sql 查询的输出。通常我会使用 dblink 并编写一个 sql 查询来处理完整的外部连接并检查不相同的数据。

但是,由于这两个数据库都没有设置 dblinks,而且我不适合这种情况,所以我用 php 编写,我正在学习 java,所以理论上我也可以使用它。

我正在编写的应用程序的前端是php,一个Web界面处理用户登录和数据库连接,它也可以收集数据。然后,另一个 php 应用程序将需要检查该数据是否有相同的记录,或者它必须将其传递给一个 java 应用程序来执行此操作。

任何有关如何完成此操作的帮助将不胜感激。

长短是这样的:

我有 2 个多维数据结构,其中唯一键是已知的,但通常超过 1 列。我需要识别任何丢失或不同的记录。有哪些方法可以用php或java来完成?

干杯!

===========================更新==================== ========

看了几个小时后,这就是我现在的位置。

首先,我基于对数据库 A 的查询构建数据结构。然后,我从针对 databaseB 的相同查询构建相同的数据结构。

在我拥有这两个集合之后,我会根据该结构在我的一个测试环境中动态创建全局临时表。然后我将收集到的数据插入到相应的临时表中。 最后一步是比较这两个临时表中的数据并将比较结果输出到某个地方——这应该不难。

我现在卡住的地方是 INSERT 到临时表中。 > 几千条记录的速度非常慢。我读到这个: http://www.oracle.com/technetwork/articles/seliverstov-multirows-098120.html

现在我正在尝试动态创建一个可以处理批量插入的包...我在正确的轨道上吗?

【问题讨论】:

    标签: java php mysql oracle


    【解决方案1】:

    我根本不懂php,对java只有一个模糊的概念。话虽如此:

    如果您能够在一个数据库中完成所有操作,那么完全外连接将是最低效的方法之一。相反,最有效的方法是执行 UNION ALL,按所有列分组,并仅返回组计数为 1 的组。也就是说:如果一个组的计数为 2,则同一行存在于两张桌子。 (您提到了一个有帮助的唯一键 - UNION ALL 中唯一的重复项将属于这种类型,它们不会来自同一个表。)

    为了更详细的信息,当您 UNION ALL 时,您可以再添加一列来标识源表 - 但分组位于“基础”列(不包括此标志)。

    现在:我不知道您如何将两个数据库中的结果“导入”到 php 或 java,但假设它是某种文本文件,查询输出中每行一行。每种语言都必须有其文本处理工具,您可以在其中识别相同的行,进行计数 - 模仿我上面描述的内容。我知道如何在 Oracle SQL 和 UNIX 工具中做到这一点;我不知道如何在 php 或 java 中做到这一点,但如果你精通这些语言,也许你会。

    祝你好运!

    【讨论】:

    • 感谢您的回答。我更新了我的问题,因为此时我认为我已经确定了一个概念性的解决方案。看上面。另外 - 感谢关于工会组织的提示,我没有想到这一点,下次我必须写一个测试时我会试一试。
    猜你喜欢
    • 1970-01-01
    • 2016-03-08
    • 2013-04-06
    • 1970-01-01
    • 2015-12-22
    • 2016-08-04
    • 2012-12-10
    • 2021-09-06
    • 1970-01-01
    相关资源
    最近更新 更多