我有两个完全相同结构的数据库表。这些表之间的区别在于,一个表包含由一个应用程序填充的数据,另一个表由另一个应用程序填充。每个应用程序都试图产生相同的结果,但使用两种不同的实现方法。
我想要做的是,运行两个应用程序,这将大致产生35000行,每行包含10列 - 总而言之,70000行数据,然后我想比较每一行数据,COLUMN BY COLUMN来检查值是否相同。
由于有太多的数据需要比较,我觉得最好的方法是编写一个应用程序,最好用C#(但如果需要,T-sql),来比较每一行数据列按列,并将任何失败的比较写出到文本日志文件。
有人能建议一种有效的方法来逐行比较70000行数据吗?我正在努力寻找解决这个问题的想法。
这两个应用程序都是用C#.Net 3.5编写的。 数据库正在Sql Server 2005上运行。
非常感谢。
答案 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