导读:本期聚焦于小伙伴创作的《SQLite中如何插入多条数据_SQLite批量插入数据方法》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《SQLite中如何插入多条数据_SQLite批量插入数据方法》有用,将其分享出去将是对创作者最好的鼓励。

在SQLite的实际使用中,单条执行INSERT语句插入数据的方式效率很低,尤其是需要插入上百上千条数据时,频繁的磁盘IO和事务开销会明显拖慢程序运行速度。掌握批量插入数据的方法,能够有效提升数据写入效率,适配更多业务场景。

SQLite中如何插入多条数据_SQLite批量插入数据方法

方法一:使用多值INSERT语法批量插入

SQLite支持在一条INSERT语句中写入多个值组,实现单次语句插入多条数据,这是最基础的批量插入方式,适合数据量较小、数据已经确定的场景。

语法格式如下:

INSERT INTO 表名 (列1, 列2, 列3)
VALUES 
(值1_1, 值1_2, 值1_3),
(值2_1, 值2_2, 值2_3),
(值3_1, 值3_2, 值3_3);

下面是具体的示例,先创建一张用户表,再一次性插入三条用户数据:

-- 创建用户表
CREATE TABLE IF NOT EXISTS user (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    age INTEGER,
    email TEXT
);

-- 批量插入三条用户数据
INSERT INTO user (name, age, email)
VALUES 
('张三', 25, 'zhangsan@ipipp.com'),
('李四', 28, 'lisi@ipipp.com'),
('王五', 22, 'wangwu@ipipp.com');

这种方式的优点是语法简单,不需要额外处理事务,缺点是一条语句能插入的数据量有限,如果数据量过大,SQL语句会变得很长,甚至超出SQLite的语句长度限制。

方法二:结合事务优化批量插入

SQLite默认每条INSERT语句都会开启一个独立事务,单条插入时事务开销占比很高。如果先把多条插入操作放在同一个事务中执行,就能大幅减少事务提交的次数,提升插入效率。

使用事务批量插入的步骤如下:

  • 开启事务:执行BEGIN TRANSACTION语句
  • 执行多条INSERT语句插入数据
  • 提交事务:执行COMMIT语句,如果执行过程中出现错误则执行ROLLBACK回滚事务

下面是Python语言中使用事务批量插入数据的示例:

import sqlite3

# 连接SQLite数据库,如果数据库不存在会自动创建
conn = sqlite3.connect('test.db')
cursor = conn.cursor()

# 创建测试表
cursor.execute('''
CREATE TABLE IF NOT EXISTS product (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    product_name TEXT NOT NULL,
    price REAL,
    stock INTEGER
)
''')

# 准备要插入的多条数据
product_data = [
    ('笔记本电脑', 4999.00, 100),
    ('无线鼠标', 89.00, 500),
    ('机械键盘', 299.00, 200),
    ('显示器', 1299.00, 150),
    ('移动硬盘', 399.00, 300)
]

try:
    # 开启事务
    cursor.execute('BEGIN TRANSACTION')
    # 循环执行插入语句
    for item in product_data:
        cursor.execute('INSERT INTO product (product_name, price, stock) VALUES (?, ?, ?)', item)
    # 提交事务
    conn.commit()
    print('批量插入数据成功')
except Exception as e:
    # 出错时回滚事务
    conn.rollback()
    print(f'插入数据失败,错误信息:{e}')
finally:
    # 关闭连接
    conn.close()

方法三:使用executemany方法批量插入

很多编程语言的SQLite驱动都提供了executemany方法,专门用来批量执行参数化的SQL语句,内部会自动优化执行逻辑,比手动循环执行单条插入效率更高,也更简洁。

下面是Python中使用executemany批量插入数据的示例:

import sqlite3

conn = sqlite3.connect('test.db')
cursor = conn.cursor()

# 创建测试表
cursor.execute('''
CREATE TABLE IF NOT EXISTS student (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    student_name TEXT NOT NULL,
    score REAL,
    class TEXT
)
''')

# 准备批量插入的数据列表
student_data = [
    ('赵六', 92.5, '三年级一班'),
    ('孙七', 88.0, '三年级一班'),
    ('周八', 95.5, '三年级二班'),
    ('吴九', 76.0, '三年级二班'),
    ('郑十', 89.5, '三年级三班')
]

# 使用executemany批量插入
sql = 'INSERT INTO student (student_name, score, class) VALUES (?, ?, ?)'
cursor.executemany(sql, student_data)

# 提交事务
conn.commit()
print('使用executemany批量插入数据成功')

conn.close()

不同批量插入方法的对比

为了帮助开发者选择合适的方法,下面从适用场景、效率、数据量限制三个维度对三种方法进行对比:

插入方法适用场景效率数据量限制
多值INSERT语法数据量小、数据固定的场景中等受SQL语句长度限制,一般建议不超过几百条
事务+循环插入数据量中等、需要自定义插入逻辑的场景较高无明确限制,适合上万条数据插入
executemany方法数据量大、使用编程语言操作的场景最高无明确限制,底层做了优化,适合大量数据批量写入

注意事项

  • 批量插入数据时如果不需要实时查询插入的结果,可以在插入完成后再创建索引,避免插入过程中频繁更新索引影响效率
  • 如果插入的数据量特别大,建议分批次插入,每插入一批提交一次事务,避免单次事务占用过多内存
  • 参数化插入时尽量使用占位符而不是字符串拼接,既能避免SQL注入风险,也能让数据库更好地复用执行计划

SQLite批量插入INSERT语句事务executemany修改时间:2026-05-30 21:20:32

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。