在非常大的文件中引用CSV记录

时间:2012-05-14 10:34:12

标签: python csv

我有两个csv文件,用于存储我需要匹配的id和一些相关字段。目前,在Python 2.4中,我将csv文件加载到记录对象的字典中,并使用字典键作为记录ID。然后我遍历一个并匹配另一个中的键并进行一些处理。

这一切都很好并且运行良好但这是在相对较小的csv文件上,有大约60,000条记录。我很快就需要处理数百万条记录和可能的多个csv文件。我担心使用当前方法的内存负载。

我最初在思考csv阅读器中的简单循环并且根本不打算将它们加载到内存中,但是当为其他文件中的每百万条记录循环几百万条记录时,我们说的效率非常低东西在这里。

那么,关于这样做的好方法的任何想法?我陷入了python 2.4,我无法真正改变csv文件,我想尽可能避免使用sql。感谢

编辑:作为一个棒球场,我正在查看多达20个200MB的文件。

1 个答案:

答案 0 :(得分:2)

您希望避免使用SQL的原因是什么?

确实想要切换到使用某种数据库。我建议SQLite开始;它作为sqlite3 module.被融入Python。它没有其他依赖关系,使用普通文件(或RAM)进行数据存储 - 无需网络/服务器设置 - 而且开始时很容易。

您要切换到数据库的原因包括:

  • 写的代码要少得多。您不必编写循环来查找特定元素,而只需编写SELECT个查询。
  • 数据库知道如何以您甚至没想过的方式优化查询。它通常比你在Python中滚动的任何伪数据库快得多。
  • 您可以执行更复杂的查询。您可以选择符合特定条件(SELECT * FROM table WHERE...)的行,将一个表中的记录与另一个表(SELECT * FROM table1 JOIN table2...)中的记录相关联,等等。