我正在尝试检查两个不同服务器上2个不同数据库之间2个表中的数据差异。
我会按primary_key(id)
对它们进行比较,但我怎么能正确地做到这一点?表格引擎为InnoDB
而非Federated
。
我的初始方法类似于:(未经测试的代码)
v2 = v2db.query("SELECT id FROM #{table1}")
v3 = v3db.query("SELECT id FROM #{table2}")
diff = v2 - v3
if diff.count > 0
puts "diff is greater than 0"
elsif diff.count < 0
puts "diff is less than 0"
else
puts "tables in sync"
关于更好的方法的任何想法,因为表包含30,000+
行并将这一切加载到结果中将是麻烦的。
答案 0 :(得分:0)
如果您只想查看行数的差异,我猜解决方案会是这样的:
v2 = v2db.query("SELECT count(id) FROM #{table1}")
v3 = v3db.query("SELECT count(id) FROM #{table2}")
diff = v2 - v3
if diff.count > 0
puts "diff is greater than 0"
elsif diff.count < 0
puts "diff is less than 0"
else
puts "tables in sync"
但是你必须为每个查询创建一个带有id的arraylist,并检查id上的2个arraylists,如果你想检查它们是否相同。
此算法的复杂性为O(n)。