我有3个SQLite数据库,每个数据库都有完全相同的7个表的表结构。[他们是从3个不同的机器日志转储]。我想把它们合并成一个SQLite数据库,有那些非常相同的7个表,但每个表应该有来自所有三个数据库的组合数据。因为我想运行查询跨越3他们。什么是最好的,最快的方式做到这一点。
j13ufse21#
这里有一个合并两个数据库的方法,所有的表都是相同的结构。2我希望它能有所帮助。
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")
d8tt03nd2#
将每个数据库导出到SQL转储,然后将转储导入到新的组合数据库中。对于GUI,请查看http://www.sqlite.org/cvstrac/wiki?p=ManagementTools例如,SQLiteStudio将为**数据库***〉导出数据库: 导出格式 *:SQL〉完成。使用命令行sqlite3实用程序(在linux repos中可用,通常已经存在ootb),您可以使用以下命令创建转储:
sqlite3
sqlite3 my_database.db .dump > mydump.sql
SQL转储可以从shell直接导入到新的/现有的sqlite数据库中:
sqlite3 my_database.db < my_dump.sql
注:使用GUI工具,您可以更灵活地选择要包含的列,例如,在某些情况下,您可能希望排除主键/外键等。
2条答案
按热度按时间j13ufse21#
这里有一个合并两个数据库的方法,所有的表都是相同的结构。2我希望它能有所帮助。
d8tt03nd2#
将每个数据库导出到SQL转储,然后将转储导入到新的组合数据库中。
对于GUI,请查看http://www.sqlite.org/cvstrac/wiki?p=ManagementTools
例如,SQLiteStudio将为**数据库***〉导出数据库: 导出格式 *:SQL〉完成。
使用命令行
sqlite3
实用程序(在linux repos中可用,通常已经存在ootb),您可以使用以下命令创建转储:SQL转储可以从shell直接导入到新的/现有的sqlite数据库中:
注:使用GUI工具,您可以更灵活地选择要包含的列,例如,在某些情况下,您可能希望排除主键/外键等。