我从XML文件中提取大量数据,所有这些数据都需要相互验证(超过500,000条记录)。它是位置数据,因此它具有以下信息:县,街道前缀,街道后缀,街道名称,起始门牌号码,结束号码。有重复,房号重叠等,我需要报告所有这些数据(如有问题的地方)。另外,xml文件中没有数据排序,因此每条记录都需要与其他所有记录进行匹配。在Python中处理数据的大型临时数据库
现在我创建一个基于街道名称信息的位置字典,然后存储房屋号码开始和结束位置的列表。完成这一切之后,我正在遍历创建的海量数据结构,以便在每个列表中查找重复项和重叠项。我遇到了数据结构的大小问题以及出现了多少错误。
向我提出的一个解决方案是创建一个临时SQLite数据库,以保存从文件中读取的所有数据,然后运行数据库以查找数据的所有问题,并将其报告出来,然后销毁DB。有没有更好/更有效的方法来做到这一点?并有更好的方法来解决这个问题的任何建议?
作为一个fyi,我正在阅读的xml文件超过了500MB(存储了除这条街道信息之外的其他数据,尽管这是它的大部分数据),但是文件的处理不在我所在的位置遇到问题时,它只是在处理从文件中获得的数据时。
编辑:我可以进入更多的细节,但海报谁提到,有足够的数据内存空间实际上是正确的,虽然在一个情况下,我确实必须运行这对350万条记录,在那我确实需要创建一个临时数据库。
考虑使用Python标准库bsddb包。它提供了一个字典界面,但由磁盘上的哈希表或B树支持。 –
自2.6起已弃用http://docs.python.org/library/bsddb.html –
好的,使用http://www.jcea.es/programacion/pybsddb.htm和bsddb3模块...相同的想法,名字略有不同。 –