Python:在大dbf(xbase)文件中快速查询

9 投票
3 回答
5943 浏览
提问于 2025-04-15 19:57

我有一个很大的DBF文件(大约700MB)。我想用一个Python脚本从中选择几行数据。我看到dbfpy是一个不错的模块,可以打开这种类型的数据库,但目前我还没有找到可以查询的功能。用Python逐个遍历所有元素实在是太慢了。

我能在合理的时间内用Python做到我想要的事情吗?

3 个回答

1

如果你在使用Windows系统,可以用odbc这个模块,配合Visual FoxPro ODBC Driver来一起使用。

2

很可能,你的程序性能问题主要是因为输入输出(I/O)速度慢,而不是处理器(CPU)速度慢。因此,提升速度的最好方法就是优化你的搜索方式。你可能需要建立一个索引,这个索引是根据你搜索的条件来组织的。

14

使用我的dbf模块,你可以创建临时索引,然后用这些索引来进行搜索:

import dbf

table = dbf.Table('big.dbf')
index = table.create_index(lambda rec: rec.field) # field should be actual field name

records = index.search(match=('value',))

创建索引可能需要几秒钟,但之后的搜索速度非常快。

撰写回答