合并两个SQLITE数据库的最快方法

zlhcx6iw  于 2023-02-16  发布在  SQLite
关注(0)|答案(2)|浏览(723)

我有3个SQLite数据库,每个数据库都有完全相同的7个表的表结构。[他们是从3个不同的机器日志转储]。
我想把它们合并成一个SQLite数据库,有那些非常相同的7个表,但每个表应该有来自所有三个数据库的组合数据。因为我想运行查询跨越3他们。什么是最好的,最快的方式做到这一点。

j13ufse2

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")
d8tt03nd

d8tt03nd2#

将每个数据库导出到SQL转储,然后将转储导入到新的组合数据库中。
对于GUI,请查看http://www.sqlite.org/cvstrac/wiki?p=ManagementTools
例如,SQLiteStudio将为**数据库***〉导出数据库 导出格式 *:SQL完成
使用命令行sqlite3实用程序(在linux repos中可用,通常已经存在ootb),您可以使用以下命令创建转储:

sqlite3 my_database.db .dump > mydump.sql

SQL转储可以从shell直接导入到新的/现有的sqlite数据库中:

sqlite3 my_database.db < my_dump.sql

注:使用GUI工具,您可以更灵活地选择要包含的列,例如,在某些情况下,您可能希望排除主键/外键等。

相关问题