【问题标题】:Compare data between two similar tables in different servers比较不同服务器中两个相似表之间的数据
【发布时间】:2019-07-18 05:06:26
【问题描述】:

我需要比较两个表中的数据。这些表在架构上相似,但具有不同的数据值。我想将这些数据导出为 csv 或类似格式,然后检查差异。

我想使用 python 脚本执行此检查。我已经想出了如何将数据导出为 csv 格式。但我的问题是,由于这两个表不在接收器中,同一行的主键可能不同。此外,to 表中的行顺序可能不同。 CSV 比较在这方面对我没有帮助。

CSV 格式的示例数据库表如下 身份证、姓名、职务、部门

db1 中的表员工

1,Ann,经理,销售

2、Brian、高管、市场营销

4,梅丽莎,工程总监

5,乔治,经理,工厂

db2 中的表员工

1,Ann,经理,销售

2,乔治,经理,工厂

3、Brian、高管、市场营销

这里 Melissa 是第二个数据库中的一条缺失记录。但是 George 和 Brian 即使他们有不同的 ID 也被认为是相同的记录。

我发现有用于此任务的商业软件,但我需要一个可在流程中使用的脚本来识别表中的差异。

【问题讨论】:

  • 我觉得你的问题和这个问题stackoverflow.com/questions/20685316/…类似
  • 其实他需要找到一些列值不同的行。我想要检查的行可能不是相同的顺序并且可能没有相同的 id,但基本上剩余的数据是相等的。这样我就可以过滤掉数据库中丢失的数据行
  • 如果可能,请提供一些示例数据。谢谢。
  • 到目前为止你尝试过做什么?你被困在哪里了?堆栈溢出不适合其他人从头开始为您编写代码。
  • 另外,您发现哪些商业软件可以做到这一点?如果两个表的每一行都没有匹配的 ID,则处理此问题的唯一方法是找到具有最接近数据集的行并假设它实际上是同一行。或者,如果您只是想知道另一个表中哪些行没有完全匹配的行,那会容易得多 - 您只需遍历两个表,直到确认没有匹配的数据。但这不会告诉您特定行之间存在哪些特定差异。

标签: python sql oracle


【解决方案1】:

我以前也有这样的问题。我的解决方案如下:

  1. 使用 Database Link 连接两个数据库。
  2. 然后用主键连接两个表。
  3. 比较两个表的列。例如"SCHEMAA".T1.col1"SCHEMAB"T1.col1

【讨论】:

    【解决方案2】:

    可能不是完整的解决方案,希望这可能会有所帮助。

    如果要比较这两个位于不同数据库/环境中的表,则需要在 SQL_Developer 中为其提供 DB_Link。

    select name||'--'||designation||'--'||department from employee_db_1
    minus
    select name||'--'||designation||'--'||department from employee_db_2
    union 
    select name||'--'||designation||'--'||department from employee_db_2
    minus
    select name||'--'||designation||'--'||department from employee_db_1;
    

    好文章: https://blogs.oracle.com/sql/how-to-find-and-delete-duplicate-rows-with-sql

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2017-06-03
      • 1970-01-01
      • 1970-01-01
      • 2013-10-24
      • 1970-01-01
      相关资源
      最近更新 更多