我試過兩個模塊,用於讀取dbf文件(dbf和dbfpy),但我必須通過記錄讀取數據庫記錄來查找內容。這對於大型數據庫來說確實很慢。是否有任何模塊可以處理查詢表或使用CDX索引?用python高效讀取foxpro DBF
2
A
回答
2
我不相信dbfpy
支持索引文件,而且我知道dbf
沒有。
然而,在dbf
您可以創建一個臨時索引,然後查詢是:
big_table = dbf.Table('/path/to/some/big_table')
def criteria(record):
"index the table using these fields"
return record.income, record.age
index = big_table.create_index(key=criteria)
index
現在可以itereated過,或搜索返回所有匹配的記錄:
for record in index.search(match=(50000, 30)):
print record
樣本表:
table = dbf.Table('tempu', 'name C(25); age N(3,0); income N(7,0);')
table.open()
for name, age, income in (
('Daniel', 33, 55000),
('Mike', 59, 125000),
('Sally', 33, 77000),
('Cathy', 41, 50000),
('Bob', 19, 22000),
('Lisa', 19, 25000),
('Nancy', 27, 50000),
('Oscar', 41, 50000),
('Peter', 41, 62000),
('Tanya', 33, 125000),
):
table.append((name, age, income))
index = table.create_index(lambda rec: (rec.age, rec.income))
還有碰到部門首長搜索範圍的開頭和結尾:
# all the incomes of those who are 33
for rec in index.search(match=(33,), partial=True):
print repr(rec)
print
# all the incomes of those between the ages of 40 - 59, inclusive
start = index.index_search(match=(40,), nearest=True)
end = index.index_search(match=(60,), nearest=True)
for rec in index[start:end]:
print repr(rec)
它打印:
Daniel 33 55000
Sally 33 77000
Tanya 33 125000
Cathy 41 50000
Oscar 41 50000
Peter 41 62000
Mike 59 125000
+0
這花了大約兩倍的時間。我猜,因爲它必須創建索引,然後通過它循環。 – user3727436
+0
@ user3727436:你能編輯你的答案併發布你試過的代碼嗎?創建索引會循環遍歷整個表,但在此之後(使用適當的成語)查找應該使用二進制algorythm。 –
相關問題
- 1. Php讀取Foxpro DBF文件
- 2. 從PHP/Linux讀取Foxpro文件(.DBF)
- 3. foxpro dbf查詢
- 4. C#visual foxpro dbf indices
- 5. 讀取記錄dbf foxpro 2.6已在excel上刪除
- 6. 無法讀取Visual FoxPro DBF文件中的編碼文本
- 7. Foxpro FPD DBF開放問題
- 8. 用pyodbc讀取DBF文件
- 9. Visual FoxPro DBF更新使用PHP
- 10. FoxPro:如何從獨佔鎖定的DBF表文件讀取數據?
- 11. 用Python在Linux上高效地讀取csv文件在Python中
- 12. 爲FoxPro DBF(自由表)C#代碼
- 13. 如何插入到DBF文件(FoxPro的)
- 14. 在foxpro dbf中創建多列索引?
- 15. c#如何正確寫入.dbf(foxpro)
- 16. 在dbf-visual foxpro中搜索數據9
- 17. Python dbfpy和FoxPro
- 18. 使用OLEDB讀取FoxPro中的特殊字符
- 19. 使用python中的dbf庫讀取更改
- 20. 用Java讀取FoxPro 2.6數據
- 21. 如何高效地用python讀取cap文件?
- 22. 使用Python 2.7高效讀取800 GB XML文件
- 23. Python - 讀取文件夾中的所有文件(.shp,.dbf,.mxd等)
- 24. 使用Advantage Local Sever和FoxPro同時更新DBF文件
- 25. python dbf到mysql
- 26. python dbf reader:NotImplementedError
- 27. 如何直接讀取dbf/dbt文件?
- 28. Asp.net讀取文件.dbf錯誤conn.Open()
- 29. 讀DBF文件/硒
- 30. 使用ODBC從Java讀取Visual Foxpro數據
根據您的平臺,我想你可以嘗試操作系統級別的外部接口,如ODBC/JDBC。 –