有两个 sqlite 数据库 A 和 B,都包含 10+ 百万行。任务是读取 B 中的所有记录并将这些新记录添加到 A 中,如果它们不存在的话。
A中没有重复,但B中有很多重复。
我发现这是一项棘手的工作,因为当 A 和 B 都只包含大约 100 万行时,我所做的就是:
list_from_A = read all rows into a list from database A
list_from_B = read all rows into a list from database B
no_dupe_list = list(set(list_from_A) - set(list_from_B))
append no_dupe_list into database A
现在由于这两个数据库太大而无法全部读入内存,所以我在执行此操作时经常遇到 MemoryError,实际上发生这种情况时只使用了 2G 内存,而我的 win 7 64 位总共有 16G RAM,所以顺便说一下让python充分利用这一点的想法吗?
无论如何,基本上我必须将数据库 B 分成几个部分来完成这项工作,这更加无效,因为 B 中已经有很多重复项,并且它们最终被分成不同的部分,每次与数据库 A 进行比较时都会处理这些部分,那么有没有更快的方法来做到这一点?