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

使用Django向SQLite表高效插入数百条CSV数据的方法是什么?

Django CSV数据批量导入SQLite高效方案

方案1:Django ORM bulk_create 批量插入(最常用、兼容性最好)

这是几百条数据量级下性价比最高的方案,比逐条调用save()快5~10倍,不需要额外工具,还能复用Django模型的字段校验逻辑。
操作步骤:

  • 首先确认你的Django模型字段和CSV列一一对应,比如模型为myapp.models.Product
  • 读取CSV生成模型实例列表,一次性批量提交:
import csv
from myapp.models import Product

batch = []
with open("data.csv", "r", encoding="utf-8") as f:
    reader = csv.DictReader(f)
    for row in reader:
        # 此处可自行添加字段格式转换逻辑,比如日期、数值类型转换
        batch.append(Product(
            name=row["商品名称"],
            price=float(row["商品价格"]),
            stock=int(row["库存"]),
            # 其余字段按实际情况映射
        ))

# 批量插入,SQLite环境建议batch_size设置在100~500区间
Product.objects.bulk_create(batch, batch_size=200, ignore_conflicts=True)

参数说明:ignore_conflicts=True可跳过唯一键冲突的数据,避免导入中断。

方案2:SQLite原生CSV导入(速度最快)

如果不需要走Django ORM的校验逻辑,直接调用SQLite自带的导入命令,速度比ORM方案还要快数倍,适合数据已经提前校验完成的场景。
操作步骤:

  1. 先确认Django模型对应的数据库表名,默认规则为应用名_模型小写名,比如myapp应用下的Product模型对应表名为myapp_product
  2. 命令行执行导入:
# 进入SQLite交互模式,db.sqlite3为你的Django数据库文件路径
sqlite3 db.sqlite3
# 切换为CSV导入模式
.mode csv
# 执行导入,注意如果表有自增主键,CSV不要包含主键列,避免冲突
.import ./data.csv myapp_product

方案3:自定义Django管理命令(适合重复导入场景)

如果需要定期执行导入操作,可以把批量插入逻辑封装为Django自定义命令,后续直接调用命令即可执行,不需要重复写导入逻辑。

注意事项

  • 导入前建议先备份数据库,避免错误写入导致数据损坏
  • CSV如果有特殊字符、空值,提前做清洗处理,避免插入失败
  • 几百条数据的量级下方案1完全够用,操作简单不容易出错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:45:01