2012-02-19 2227 views
9

我有3个SQLite数据库,每个数据库具有与表结构相同的7个表。 [他们是来自3台不同机器的日志转储]。最快的方式合并两个SQLITE数据库

我想将它们组合成一个SQLite数据库,它们有相同的7个表,但每个表应该有来自所有三个数据库的组合数据。因为我想在它们中的三个上运行查询。 什么是最好的,最快的方式来做到这一点。

+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-有这个主场,http://stackoverflow.com/questions/4913369/how-to-merge-multiple-database-files-in-sqlite,http://stackoverflow.com/questions/9048711/merging-数据库......没有任何内容或链接的问题帮助你? – Mat 2012-02-19 13:53:34

+1

是的,我经历了他们,还有更多。我正在寻找在我的Python代码中执行该操作的强大方法,因此我正在寻找最佳实践。 – subiet 2012-02-20 06:13:20

+0

@subiet,如果有重复的行怎么办? – Pacerier 2015-10-12 10:46:43

回答

5

将每个数据库导出到SQL转储,然后将转储导入到新的组合数据库中。

对于GUI的看看http://www.sqlite.org/cvstrac/wiki?p=ManagementTools

例如,SQLiteStudio那将是数据库>导出数据库导出格式SQL>完成

+0

嘿,图形用户界面不是一种选择,它必须重复执行程序。我将探索SQL转储方法,它会照顾每个表中的ID的主键约束,我对此有点怀疑。 – subiet 2012-02-20 06:14:19

+1

为什么你需要导出主键?导出数据并插入记录,将为您生成密钥。如果你想在Python中完成,请查看http://mysql-python.sourceforge.net/MySQLdb.html#some-examples和http://www.kitebird.com/articles/pydbapi.html – ccpizza 2012-02-20 12:57:48

6

这里是将两个数据库与同一结构的所有表合并的一种方法。我希望它可以帮助。

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") 
相关问题