我正在创建一个工具,它以两个数据库作为输入,比较表并显示表之间的“仅数据差异”。
例如,
源数据库-人员、订单(两个表)
目的地数据库-人员、订单(两个表)
现在,我的应用程序将源数据库中的人员与目标数据库中的人员进行比较,并仅显示源人员中而非目标人员中的记录。
这是我的方法-
- 将两个数据库加载到两个数据集中(源数据集, 目标数据集)。
- 逐行比较两个表。
- 如果发现任何更改(例如源 Person 中的行不在目标 Person 中),则将这些行插入到目标 Person 中。
我的问题:有没有更好/有效的方法来实现这一目标?
迭代整个数据库是效率最低的解决方案。
最佳答案
通常最好将工作推送到数据库中。为每对表生成一个 FULL OUTER JOIN 查询以计算服务器上的差异。这将到目前为止比将所有数据传输到客户端要快。
特别是数据表等效率不是很高。
另一种方法是请求对行进行排序并在内存中对两个结果流执行合并连接。您可以在网络上找到有关如何合并两个排序流的示例代码。
关于c# - 有什么有效的解决方案/方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38171172/