网站建设到本地,品牌网站建设工作室,网页设计说明万能模板,泉州网站关键词推广费用sqlite 合并两个数据库中的特定表 命令行python 版本 命令行
.open v1/mydb.db
attach v2/mydb.db as db2;
insert into main.表1 select * from db2.表1;
insert into main.表2 select * from db2.表2;
.exit参数说明v1/mydb.db主db文件路径#xff0c;合并后的结果就是它… sqlite 合并两个数据库中的特定表 命令行python 版本 命令行
.open v1/mydb.db
attach v2/mydb.db as db2;
insert into main.表1 select * from db2.表1;
insert into main.表2 select * from db2.表2;
.exit参数说明v1/mydb.db主db文件路径合并后的结果就是它。v2/mydb.db要合并进 主db 的库。合完后我们就不需要它了main.open 打开的是主库默认名称为 maindb2这是我们为 attach 的库取的别名
python 版本
import sqlite3
import shutil
import argparsedef merge_tables_from_second_to_first(db1_path, db2_path, merged_db_path, table_names):# 复制主数据库以生成合并后的副本shutil.copyfile(db1_path, merged_db_path)# 连接到第二个数据库conn2 sqlite3.connect(db2_path)cursor2 conn2.cursor()# 连接到合并后的数据库conn_merged sqlite3.connect(merged_db_path)cursor_merged conn_merged.cursor()for table_name in table_names:# 从第二个数据库中获取指定表的数据cursor2.execute(fSELECT * FROM {table_name})data2 cursor2.fetchall()column_names2 [description[0] for description in cursor2.description]# 如果表在合并后的数据库中不存在则创建cursor_merged.execute(fCREATE TABLE IF NOT EXISTS {table_name} ({, .join(column_names2)}))# 插入数据到合并后的数据库中insert_query fINSERT INTO {table_name} ({, .join(column_names2)}) VALUES ({, .join([? for _ in column_names2])})cursor_merged.executemany(insert_query, data2)# 提交更改并关闭连接conn_merged.commit()conn2.close()conn_merged.close()def main():parser argparse.ArgumentParser(description合并两个 SQLite 数据库中的特定表)parser.add_argument(db1_path, help主数据库文件路径)parser.add_argument(db2_path, help要合并的数据库文件路径)parser.add_argument(merged_db_path, help合并后的数据库文件路径)parser.add_argument(table_names, nargs, help需要合并的表名列表(两个库中的表名及表结构必须一致))args parser.parse_args()merge_tables_from_second_to_first(args.db1_path, args.db2_path, args.merged_db_path, args.table_names)if __name__ __main__:main()命令行调用
python merge_dbs.py D:\v1\mydb.db D:\v1\mydb.db D:\v1\merged.db 表1 表2