2010-03-03 32 views
5

J'ai un gros fichier DBF (~ 700MB). Je voudrais en sélectionner seulement quelques lignes en utilisant un script python. J'ai vu que dbfpy est un bon module qui permet d'ouvrir ce type de base de données, mais pour l'instant je n'ai trouvé aucune fonctionnalité d'interrogation. Itérer à travers tous les éléments de Python est simplement trop lent. Puis-je faire ce que je veux de Python dans un délai raisonnable?Python: interrogation rapide dans un gros fichier dbf (xbase)

Répondre

9

En utilisant my dbf module vous pouvez créer des index temporaires et recherche à l'aide ceux-ci:

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',)) 

création de l'index peut prendre quelques secondes, mais les recherches après sont extrêmement rapides.

+1

Module très cool! –

2

Il y a des chances, votre performance est plus E/S lié que CPU lié. En tant que tel, le meilleur moyen de l'accélérer est d'optimiser votre recherche. Vous voulez probablement construire une sorte d'index avec n'importe quel prédicat de recherche.