我正在使用Perl使用DBI连接到2个不同的数据库(MySQL和Sybase),每个记录大约有700,000个记录,我需要它们是相同的(很可能每周都会有几个不同的记录) ),第一次这样做只是复制表的问题,但这需要定期(至少每周一次)完成,只需丢弃表并每次都复制一遍不是一个好的解决方案,所以我想知道:使用Perl比较来自2个不同数据库的700,000行的更快方法是什么?
注意:表格有5个字段(所有字段类型包括主键)
答案 0 :(得分:4)
将每个表(已排序)加载到Perl中,然后在两个列表上运行Algorithm:Diff。最后,您将获得要删除的行和要插入的行的良好列表。某些行可能会被删除并重新插入(如果您将外键挂在这些行上,则需要进行更新而不是删除/插入)。
700,000行不是现代机器上的大量数据,也不是很多内存。
如果您只需要存在行(即行存在或者不存在而不是实际的行更改),您可以在键上执行diff,然后从那里获取所需的行。