【问题标题】:How to compare 2 tables from 2 databases (and servers) different ? (Oracle & Mysql)如何比较来自 2 个数据库(和服务器)的 2 个不同的表? (甲骨文和Mysql)
【发布时间】:2023-03-22 01:05:01
【问题描述】:

我想比较来自 2 个不同数据库(和服务器)的 2 个表……一个是 Oracle,另一个是 Mysql。

我对同一个数据库中的表这样做了:

SELECT FIELD 1, FIELD 2
FROM SCHEMA.TABLENAME1
MINUS
SELECT FIELD 1, FIELD 2
FROM SCHEMA.TABLENAME2

我正在使用 dbeaver 进行查询。

【问题讨论】:

  • 好了,现在导出到 doc 并融合或区分它们 docs。
  • 如果我导出两个表以通过 excel 进行比较,文件真的(真的)很大(X00 000 行)。我想导出比较表格内容的查询结果。
  • 你可以试试这个镜像概念吗-stackoverflow.com/questions/19805152/…
  • 幸运的是,您不会通过 Excel 比较它们。您可以融合或区分它们的文档。
  • 镜像在这个问题上是多余的。

标签: mysql sql database oracle


【解决方案1】:
select col1, col2, ..., coln
from sch1.table1
minus
select col1, col2, ..., coln
from sch2.table1

运作良好,但您还需要做两件事

select col1, col2, ..., coln
from sch2.table1
minus
select col1, col2, ..., coln
from sch1.table1

select count(*) ftom sch1.table1
union all
select count(*) ftom sch2.table1

如您所见,查询应该在同一个 RDBMS 中。

【讨论】:

    【解决方案2】:

    您可以使用not exists 进行等效逻辑:

    SELECT FIELD1, FIELD2
    FROM SCHEMA.TABLENAME1 t1
    WHERE NOT EXISTS (SELECT 1
                      FROM SCHEMA.TABLENAME2 t2
                      WHERE t2.FIELD1 = t1.FIELD1 AND t2.FIELD2 = t2.FIELD2
                     );
    

    实际上,这个逻辑并不是 100% 等价的。另一方面,它是标准语法,应该适用于任何数据库。

    有两个重要的区别。

    首先,它返回重复值。 MINUS 删除重复项。

    其次,它将过滤掉任一列中具有NULL 值的行。如果这是一个问题,可以修改比较以将 NULL 值考虑在内。

    另一种方法(更接近MINUS)使用UNION ALL 和聚合:

    select field1, field2
    from ((select field1, field2, 1 as which
           from table1
          ) union all
          (select field1, field2, 2 as which
           from table2
          )
         ) t
    group by field1, field2
    having max(which) = 1;
    

    这处理NULL 值和重复项的方式与MINUS 相同。它还很容易泛化以获取两个表之间的其他关系。

    【讨论】:

    • 感谢您的回答。它适用于同一服务器中的 2 个表,但是如果我想比较 2 个不同服务器中的表,您知道该怎么做吗?
    • @Rifipop 。 . .完全相同的。您只需要链接到服务器,就可以引用该表。如果这是你的问题,那么你应该问一个新的问题(在查阅文档之后)。
    猜你喜欢
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 2015-10-02
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多