SQLite3 是一个轻量级的数据库引擎,它允许你在本地文件系统中创建和管理数据库。SQLite3 数据库文件通常具有 .db
扩展名。当你有多个名称不同的 SQLite3 数据库文件,但它们包含相同结构的表时,你可能需要将这些数据库合并成一个单一的数据库。
合并 SQLite3 数据库主要有两种类型:
多个数据库文件可能由于历史原因或组织结构分散在不同的目录中,但它们包含相同结构的表。
以下是一个示例代码,展示如何将多个 SQLite3 数据库合并成一个单一的数据库:
import sqlite3
def merge_databases(source_dbs, target_db):
# 连接到目标数据库
conn_target = sqlite3.connect(target_db)
cursor_target = conn_target.cursor()
# 遍历源数据库文件
for source_db in source_dbs:
# 连接到源数据库
conn_source = sqlite3.connect(source_db)
cursor_source = conn_source.cursor()
# 获取源数据库中的所有表名
cursor_source.execute("SELECT name FROM sqlite_master WHERE type='table';")
tables = cursor_source.fetchall()
# 将每个表从源数据库复制到目标数据库
for table in tables:
table_name = table[0]
cursor_source.execute(f"SELECT * FROM {table_name};")
data = cursor_source.fetchall()
# 创建表(如果目标数据库中不存在)
create_table_sql = f"CREATE TABLE IF NOT EXISTS {table_name} AS SELECT * FROM {table_name} LIMIT 0;"
cursor_target.execute(create_table_sql)
# 插入数据
insert_sql = f"INSERT INTO {table_name} VALUES ({','.join(['?']*len(data[0]))});"
cursor_target.executemany(insert_sql, data)
# 关闭源数据库连接
conn_source.close()
# 提交更改并关闭目标数据库连接
conn_target.commit()
conn_target.close()
# 示例用法
source_dbs = ['db1.db', 'db2.db', 'db3.db']
target_db = 'merged.db'
merge_databases(source_dbs, target_db)
通过上述方法,你可以将多个名称不同的 SQLite3 数据库合并成一个单一的数据库。请确保在合并过程中处理好数据冲突和重复数据的问题。
领取专属 10元无门槛券
手把手带您无忧上云