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

Posted

技术标签:

【中文标题】如何比较来自不同数据库的两个表【英文标题】:How to compare two tables from different databases 【发布时间】:2017-01-31 09:24:49 【问题描述】:

我有两个数据库,SqlServer 2016 和 Oracle 10(镜像复制)。

我想比较来自不同数据库的两个相同表,而不从客户端上的表中获取所有数据。

例如:我有两个巨大的表(大小 > 500 MB),我该怎么做? 也许任何地方都有一些算法可以做到...

附:我已经实现了一些算法,但是这个算法的工作速度太慢而且工作准确率很低。

【问题讨论】:

你能设置 DBlink 吗?您可以将表从一台服务器导出/导入到另一台服务器吗?什么是yopur数据?您只能比较一些键还是需要比较所有字段?你的问题很笼统。请提供更多详细信息。 不,我不能手动从一个导入/导出到另一个(复制过程是自动的),我不能长时间阻塞表。我需要通过单击我的应用程序中的按钮来检查两个表。我的数据是 datatime、varchar、timestamp、numberic 等列。我需要比较所有字段,整个表。 【参考方案1】:

您可以使用 OPENROWSET 从 SQL Server 连接到 Oracle

select * from
OPENROWSET('OraOLEDB.Oracle','<tnsname>';'someuser';'somepassword', 
'SELECT * FROM schema.table_to_compare') A 
FULL JOIN sqlserver.table_to_compate B
ON A.field = B.field

【讨论】:

谢谢 - 但这种情况不适合(由于不同的服务器位置、流量、网络冲突等)。我想知道我的客户端(WPF 应用程序)的比较结果,我承认在我的客户端上得到了一些比较结果。 也许有一些变体可以从两个数据库中获取结果(一些哈希、校验和算法)数据集并在我的客户端上进行最终比较?

以上是关于如何比较来自不同数据库的两个表的主要内容,如果未能解决你的问题,请参考以下文章

显示来自两个不同表的两列之间的差异(比较表)

比较来自两个不同表的两列的逗号分隔值

如何比较两个表数据的差异

添加两个变量,其中包含来自同一数据库的两个不同表的值

如何比较两个表,以计算两个时间段之间的增长率?

如何对比两个相同数据库表的不同