什么是比较两个不同数据库之间的大量数据的最佳方法?

时间:2011-02-25 15:21:50

标签: c# data-integrity

我有一个桌面应用程序从Web服务接收数据并将其存储在本地postgresql数据库中(当webservice从SQL Server数据库中检索数据时)。在该过程结束时,我的本地数据库中的表中将至少有250万个条目,但这将在de webservice中以大约300行的时间和大约15天的时间段内批量接收。

我需要的是确保我的本地数据库具有服务器数据库完全相同的信息的方法。

我正在考虑为收到的每个批次创建某种校验和,然后,在收到所有批次后,整个表格的另一个校验和,但我不知道这是否是最佳解决方案,如果是,我不知道从哪里开始创建它。

PS:TCP已经处理完整性检查,所以我甚至不知道是否需要这样做,但数据是相同的至关重要。

2 个答案:

答案 0 :(得分:0)

您是否可以控制Web服务和SQL Server数据库?如果您这样做,SQL Server更改跟踪应该可以解决问题。 MSDN更改跟踪将基于每个表跟踪每个更改(或仅关注您所关注的更改)。每次同步时,只需将其版本号传递给它,它将返回所需的变更集,以便为您提供最新信息。

答案 1 :(得分:0)

我可以看到校验和如何可能有用,但你正在进行的转换量可能会使它变得不切实际。您必须在原始数据形式或转换后的表单上派生校验和;它在两者上都无效。

你有一些奇怪的限制(我自己一直在那里),所以在不了解所有细节的情况下很难想出一个明确的策略。也许以下建议之一可行。

  1. 迁移完成后,SQL Server端和PostgreSQL端的简单计数(*)。

  2. 迁移完成后,从SQL Server端和PostgreSQL端转储密钥列表,然后对这些文件进行排序和比较。

  3. 如果由于对SQL Server的访问权限有限而无法使用1和2,则可能会将Web服务调用的结果转储到单个文件位置,然后从PostgreSQL中提取相同的数据最后,比较这些文件。

  4. 如果您选择选项2或3,有许多工具可用于比较文件。