2010-03-03 11 views
5

Ho un grosso file DBF (~ 700 MB). Mi piacerebbe selezionare solo poche righe da esso utilizzando uno script python. Ho visto che dbfpy è un bel modulo che permette di aprire questo tipo di database, ma per ora non ho trovato alcuna capacità di interrogazione. L'iterazione di tutti gli elementi di Python è semplicemente troppo lenta.Python: query veloce in un file dbf (xbase) grande

Posso fare ciò che voglio da python in un tempo ragionevole?

risposta

9

Usando my dbf module è possibile creare indici temporanei e quindi cercare con quelli:

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

creazione dell'indice può richiedere alcuni secondi, ma le ricerche dopo che sono estremamente rapida.

+1

Modulo molto interessante! –

2

Le probabilità sono, la vostra prestazione è più I/O associato di CPU. Pertanto, il modo migliore per velocizzarlo è ottimizzare la ricerca. Probabilmente vuoi costruire una sorta di indice con chiave qualunque sia il tuo predicato di ricerca.

Problemi correlati