2014-04-08 14 views
5

Un DataFrame di Pandas può essere convertito in un file hdf5 come questo;convertire python sqlite db in hdf5

df.to_hdf('test_store.hdf','test',mode='w')

Ho un file db sqlite, che deve essere convertito in un file HDF5 e quindi vorrei leggere il file HDF5 attraverso panda utilizzando pd.read_hdf.

Ma prima come convertire un db sqlite python in un file hdf5?

EDIT:

sono consapevole di usare il metodo .read_sql in panda. Ma vorrei prima convertire il db in hdf5.

risposta

4

Questo è sorprendentemente semplice: utilizzare i panda!

panda supporta reading data directly from a SQL database in un DataFrame. Una volta ottenuto il DataFrame, puoi farlo come desideri.

breve esempio, tratto from the docs:

import sqlite3 
from pandas.io import sql 
# Create your connection. 
cnx = sqlite3.connect('mydbfile.sqlite') 

# read the result of the SQL query into a DataFrame 
data = sql.read_sql("SELECT * FROM data;", cnx) 

# now you can write it into a HDF5 file 
data.to_hdf('test_store.hdf','test',mode='w') 
+0

Sono a conoscenza del metodo '.read_sql '. Ma sto gestendo i problemi di dimensioni qui e quindi vorrei prima convertire il db in hdf5. – richie

+0

@richie Ho aggiunto il passaggio finale per convertire in HDF5. Pensavo fosse ovvio, data la tua domanda. – Carsten

1

Date un'occhiata a questo ---

http://www.tutorialspoint.com/sqlite/sqlite_limit_clause.htm

L'idea sarebbe quella di iterare una query select * from table e limitare i risultati con una crescente compensare. Scrivi i risultati nell'archivio dati hdf5 come mostrato sopra. Per prima cosa conta il numero di voci con un select count(*) from table e poi dividi l'iterazione con un numero gestibile di questo. ad esempio se ci sono 4 milioni di record letti 200.000 alla volta e aumenta il valore da 0, 200000, 400000 ecc ...

Ho bisogno di fare questo in un file sqlite molto grande. segnalerà se funziona.