2012-02-19 34 views
9

Tengo 3 bases de datos SQLite, cada una con exactamente el mismo conjunto de 7 tablas con respecto a la estructura de la tabla. [Son registros de descarga de 3 máquinas diferentes].Forma más rápida fusionar dos bases de datos SQLITE

Quiero combinarlos en una base de datos SQLite, teniendo esas mismas 7 tablas, pero cada tabla debe tener los datos combinados de las tres bases de datos. ya que quiero ejecutar consultas en los 3 de ellos. ¿Cuál es la mejor y más rápida forma de hacerlo?

+1

http://stackoverflow.com/questions/80801/how-can-i-merge-many-sqlite-databases, http://stackoverflow.com/questions/3689694/merge-sqlite-files- into-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- bases de datos, ... ¿No hay nada allí o las preguntas vinculadas te ayudaron? – Mat

+1

Sí, los había revisado, y algunos más. Estoy buscando una forma robusta de hacerlo dentro de mi código python, y por lo tanto estaba buscando una mejor práctica. – subiet

+0

@subiet, ¿Qué pasa si hay filas duplicadas? – Pacerier

Respuesta

5

Exporte cada base de datos a un volcado de SQL y luego importe los volcados en su nueva base de datos combinada.

Por GUI a echar un vistazo a http://www.sqlite.org/cvstrac/wiki?p=ManagementTools

Por ejemplo, con SQLiteStudio que será base de datos>Exportar la base de datos: formato de exportación: SQL>Hecho.

+0

Oye, GUI no es una opción, esto tiene que hacerse con un programa, repetidamente. Voy a explorar el método de volcado de SQL, ¿se ocupará de la restricción de la clave primaria en la identificación en cada tabla, estoy un poco dudoso sobre eso. – subiet

+1

¿Por qué necesita exportar las claves principales? Exporte los datos e inserte los registros, las claves se generarán para usted. Si desea hacerlo en Python, eche un vistazo a http://mysql-python.sourceforge.net/MySQLdb.html#some-examples y http://www.kitebird.com/articles/pydbapi.html – ccpizza

6

aquí hay una manera de unir dos bases de datos con todas las tablas de la misma estructura. Espero que pueda ayudar.

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") 
Cuestiones relacionadas