比较不同服务器中两个相似表之间的数据

时间:2019-07-18 05:06:26

标签: python sql oracle

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

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

下面是CSV格式的数据库表示例 ID,名称,名称,部门

db1中的表员工

1,Ann,Manager,Sales

2,布莱恩,行政,营销

4,Melissa,Director,Engineering

5,乔治,经理,工厂

db2中的表员工

1,Ann,Manager,Sales

2,乔治,经理,工厂

3,布莱恩,行政,营销

Melissa在第二个数据库中缺少记录。但是,即使George和Brian的ID不同,也被视为相同的记录。

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

2 个答案:

答案 0 :(得分:0)

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

  1. 使用Database Link将两个数据库连接起来。
  2. 然后用主键将两个表都连接起来。
  3. 比较两个表的列。例如“ SCHEMAA” .T1.col1 <>“ SCHEMAB” T1.col1

答案 1 :(得分:0)

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

如果要比较两个表,它们位于不同的数据库/环境中,则在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