You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中合并SQLite多同结构表并新增索引列

Python操作SQLite合并多表并新增索引列

实现步骤:

  1. 连接SQLite数据库:用Python内置的sqlite3模块建立数据库连接。
  2. 获取目标表名:从数据库元数据中筛选出需要合并的表(自动排除SQLite系统表)。
  3. 创建合并表:复制任意一个原表的结构,新增一列用于标记数据来源(或序号索引)。
  4. 批量插入数据:循环遍历每个原表,将数据插入合并表,同时填充新增的索引列。

代码示例:

import sqlite3

# 连接目标SQLite数据库
conn = sqlite3.connect('your_database.db')
cursor = conn.cursor()

# 获取所有需合并的表名
cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'")
table_list = [row[0] for row in cursor.fetchall()]

if not table_list:
    print("未找到可合并的表")
    conn.close()
    exit()

# 创建合并表:复制第一个表的结构,新增source_table列标记数据来源
first_table = table_list[0]
cursor.execute(f"CREATE TABLE IF NOT EXISTS merged_data AS SELECT *, '{first_table}' AS source_table FROM {first_table} LIMIT 0")

# 循环插入各表数据
for table_name in table_list:
    cursor.execute(f"INSERT INTO merged_data SELECT *, '{table_name}' AS source_table FROM {table_name}")
    print(f"完成表 {table_name} 的数据插入")

# 提交更改并关闭连接
conn.commit()
conn.close()

print("合并完成!合并表名为merged_data,source_table列记录数据来源表名")

可选调整:

  • 用序号作为索引:如果不需要表名作为索引,而是用数字序号区分,修改循环部分:
for idx, table_name in enumerate(table_list, start=1):
    cursor.execute(f"INSERT INTO merged_data SELECT *, {idx} AS source_index FROM {table_name}")

此时新增列名为source_index,值为1、2、3...对应各原表的遍历顺序。

内容的提问来源于stack exchange,提问作者David Kwon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 22:20:34