2012-02-19 19 views
9

Ho 3 database SQLite, ciascuno con esattamente lo stesso set di 7 tabelle rispetto alla struttura della tabella. [Sono log dump di 3 diverse macchine].Un modo più veloce unisce due database SQLITE

Voglio combinarli in un unico DB SQLite, con le stesse 7 tabelle, ma ogni tabella dovrebbe avere i dati combinati di tutti e tre i DB. dal momento che voglio eseguire query su 3 di loro. Qual è il modo migliore e più veloce per farlo.

+1

http://stackoverflow.com/questions/80801/how-can-i-merge-many-sqlite-databases, http://stackoverflow.com/questions/3689694/merge-sqlite-files- in-one-db-file-and-begin-commit-question, http://stackoverflow.com/questions/3232900/how-to-merge-n-sqlite-database-files-into-one-if-db- has-the-primary-field, http://stackoverflow.com/questions/4913369/how-to-merge-multiple-database-files-in-sqlite, http://stackoverflow.com/questions/9048711/merging- database, ... Niente di là o domande collegate ti hanno aiutato? – Mat

+1

Sì, li avevo passati attraverso e altri ancora. Sto cercando un metodo robusto per farlo nel mio codice Python, e quindi stavo cercando una best practice. – subiet

+0

@subiet, cosa succede se ci sono righe duplicate? – Pacerier

risposta

5

Esportare ogni database in un dump SQL e quindi importare i dump nel nuovo database combinato.

Per GUI un'occhiata al http://www.sqlite.org/cvstrac/wiki?p=ManagementTools

Ad esempio, con SQLiteStudio che sarà Database>esportare il database: formato di esportazione: SQL>Fatto.

+0

Ehi, la GUI non è un'opzione, questo deve essere fatto con un programma, ripetutamente. Esplorerò il metodo di scarico SQL, si prenderà cura del vincolo di chiave primaria sull'ID in ogni tabella, sono piuttosto dubbioso su questo. – subiet

+1

Perché è necessario esportare le chiavi primarie? Esportare i dati e inserire i record, le chiavi saranno generate per te. Se vuoi farlo in Python, dai un'occhiata a http://mysql-python.sourceforge.net/MySQLdb.html#some-examples e http://www.kitebird.com/articles/pydbapi.html – ccpizza

6

ecco un modo per unire due database con tutte le tabelle della stessa struttura. Spero possa aiutare.

import sqlite3 
con3 = sqlite3.connect("combine.db") 

con3.execute("ATTACH 'results_a.db' as dba") 

con3.execute("BEGIN") 
for row in con3.execute("SELECT * FROM dba.sqlite_master WHERE type='table'"): 
    combine = "INSERT INTO "+ row[1] + " SELECT * FROM dba." + row[1] 
    print(combine) 
    con3.execute(combine) 
con3.commit() 
con3.execute("detach database dba") 
Problemi correlati