有两个sqlite数据库A和B,都由1000多万行组成。任务是读取B中的所有记录,如果这些新记录在A中还不存在,则将它们添加到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,所以有没有更快的方法来做这件事?你知道吗
可以为两个数据库中的有序SELECT创建游标,并“并行”遍历游标记录(如在合并排序中)并在数据库A中插入缺少的行。最好先将它们插入临时表中,以免混淆游标,并且不需要内存使用(2行除外)
比如:
相关问题 更多 >
编程相关推荐