1

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

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

我最初是在考虑在 csv 阅读器中进行一个简单的循环,根本不费心将它们加载到内存中,但是当为其他文件中的数百万条记录中的每一条循环数百万条记录时,我们在这里谈论的效率极低。

那么,关于这样做的好方法有什么想法吗?我被困在 python 2.4 中,我无法真正从 csv 文件进行更改,如果可能的话,我想避免使用 sql。谢谢

编辑:作为一个大概的数字,我正在查看多达 20 个 200MB 的文件。

4

1 回答 1

2

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

真的想切换到使用某种数据库。我建议从 SQLite 开始;sqlite3它作为模块被烘焙到 Python 中。. 它没有其他依赖项,使用普通文件(或 RAM)进行数据存储 - 无需网络/服务器设置 - 并且非常容易上手。

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

  • 要编写的代码要少得多。不必编写循环来查找特定元素,您只需编写SELECT查询即可。
  • 数据库知道如何以您从未想过的方式优化查询。它通常比您在 Python 中滚动的任何伪数据库都要快得多。
  • 您可以进行更复杂的查询。您可以选择满足特定条件的行 ( SELECT * FROM table WHERE...),将一个表中的记录与另一表中的记录相关联 ( SELECT * FROM table1 JOIN table2...),等等。
于 2012-05-14T11:05:16.203 回答