Sql Server 2005数据库表 - 按列列行比较

时间:2010-03-22 10:17:02

标签: c# sql-server-2005

方案

我有两个完全相同结构的数据库表。这些表之间的区别在于,一个表包含由一个应用程序填充的数据,另一个表由另一个应用程序填充。每个应用程序都试图产生相同的结果,但使用两种不同的实现方法。

提出的想法

我想要做的是,运行两个应用程序,这将大致产生35000行,每行包含10列 - 总而言之,70000行数据,然后我想比较每一行数据,COLUMN BY COLUMN来检查值是否相同。

当前的想法

由于有太多的数据需要比较,我觉得最好的方法是编写一个应用程序,最好用C#(但如果需要,T-sql),来比较每一行数据列按列,并将任何失败的比较写出到文本日志文件。

问题

有人能建议一种有效的方法来逐行比较70000行数据吗?我正在努力寻找解决这个问题的想法。

额外细节

这两个应用程序都是用C#.Net 3.5编写的。 数据库正在Sql Server 2005上运行。

非常感谢。

3 个答案:

答案 0 :(得分:2)

Red Gate已经有一个名为SQL Data Compare的产品可以显示SQL Server数据库中两个表之间的差异。它可以为您节省一些工作,并且可以很好地显示结果。这不是免费的,但您可以在购买前试用试用版。

我之前使用过此产品效果不错。

答案 1 :(得分:0)

您是否尝试过 MINUS查询?这将返回第一个表中不在第二个表中的所有行,反之亦然...

答案 2 :(得分:0)

我不同意你的陈述:

  

因为有太多的数据   比较,我觉得最好的方式   这样做是为了写一个   申请,最好是在C#

SQL Server旨在高效地对大量数据执行集合操作,C#不是。您可以创建一个查询来比较所有列上的表,并将差异写入结果表;看看EXCEPT运算符。

您没有说明如何解决任何差异,是否需要手动检查差异,或者您是否打算自动进行差异?

实际上,如果您只是手动进行检查,那么您可以使用多种工具进行此类比较,这是一个价格合理的工具: http://www.datanamic.com/datadiff/index.html