使用 Python 将 Excel 数据批量导入到SQLite数据库中

 更新时间:2026年04月09日 09:05:58   作者:Jazzz  
本文介绍了一种使用Python实现Excel文件导入SQLite数据库的方法,无环境依赖,支持多工作表自动识别、动态创建表结构和安全的数据插入,核心步骤包括加载Excel文件、连接数据库、遍历工作表、读取表头动态建表和逐行数据插入

在日常数据处理工作中,将 Excel 文件内容导入数据库是一个常见需求。Python 生态中虽然有 pandas、openpyxl 等成熟方案,但当遇到超大型 Excel 文件或需要精细控制单元格格式时,借助专用组件往往能提升开发效率。

本文基于轻量级 Excel 处理库完成 Excel 文件解析,结合 Python 内置的 SQLite 数据库(无需独立部署),实现多工作表自动识别、动态创建表结构、批量数据入库的完整方案。

一、应用场景与方案优势

适用场景

  1. 企业 Excel 报表数据迁移至数据库持久化存储;
  2. 自动化办公:定期将 Excel 导出数据同步到数据库;
  3. 轻量级数据中台:多 Excel 文件整合入库,方便后续查询分析;
    4.测试数据构造:快速将 Excel 测试数据导入数据库。

方案核心优势

  1. 无环境依赖:无需安装 Microsoft Office/WPS,纯 Python 库解析 Excel;
  2. 多工作表适配:自动遍历 Excel 所有 sheet,无需手动指定;
  3. 动态建表:根据 Excel 表头自动生成数据库表结构;
  4. 安全稳定:参数化 SQL 防注入,事务管理保证数据一致性;
  5. 轻量免费:适用于中小型 Excel 文件处理,无额外成本。

二、环境准备

仅需安装 Excel 解析库(Free Spire.XLS for Python),SQLite 为 Python 内置库,无需额外安装:

pip install FreeSpire.XLS

三、核心执行流程

整个程序分为 5 个核心步骤,数据流转清晰无冗余:

加载Excel文件 → 连接数据库 → 遍历工作表 → 读取表头+动态建表 → 逐行数据插入 → 提交事务+释放资源

3.1 完整代码

from spire.xls import Workbook
import sqlite3
def excel_to_sqlite(excel_path, db_path):
    # 1. 加载 Excel 文件
    workbook = Workbook()
    workbook.LoadFromFile(excel_path)
    # 2. 连接数据库
    conn = sqlite3.connect(db_path)
    cursor = conn.cursor()
    # 3. 遍历每个工作表
    for sheet_index in range(workbook.Worksheets.Count):
        sheet = workbook.Worksheets.get_Item(sheet_index)
        sheet_name = sheet.Name.replace(" ", "")          # 表名中去掉空格
        # 4. 读取表头(第一行)
        header = []
        for col in range(sheet.AllocatedRange.ColumnCount):
            raw_value = sheet.Range[1, col + 1].Value
            # 字段名中去掉空格,并避免空字段
            field_name = raw_value.replace(" ", "") if raw_value else f"col_{col}"
            header.append(field_name)
        # 5. 创建数据库表(所有字段暂定为 TEXT 类型)
        create_sql = f"""
        CREATE TABLE IF NOT EXISTS {sheet_name} (
            {', '.join([f'[{h}] TEXT' for h in header])}
        )
        """
        cursor.execute(create_sql)
        # 6. 逐行插入数据(跳过表头行)
        for row in range(1, sheet.AllocatedRange.RowCount):  # row=1 对应 Excel 第二行
            row_data = []
            for col in range(sheet.AllocatedRange.ColumnCount):
                cell_value = sheet.Range[row + 1, col + 1].Value
                row_data.append(cell_value)
            # 使用参数化查询防止 SQL 注入
            placeholders = ','.join(['?' for _ in row_data])
            insert_sql = f"INSERT INTO {sheet_name} ({','.join(header)}) VALUES ({placeholders})"
            cursor.execute(insert_sql, row_data)
    # 7. 提交并清理
    conn.commit()
    conn.close()
    workbook.Dispose()
if __name__ == "__main__":
    excel_to_sqlite("Sample.xlsx", "output/Report.db")

3.2 关键点解析

1. 工作表遍历与表名清洗
workbook.Worksheets.Count 获取工作表总数,get_Item(s) 按索引获取。工作表名称可能包含空格、特殊字符,直接用作 SQLite 表名会导致语法错误,因此使用 .replace(" ", "") 去除空格。更严谨的做法可增加正则过滤,只保留字母数字和下划线。

2. 动态建表与字段类型
示例将所有字段定义为 TEXT 类型,适配 Excel 中字符串、数字、日期等通用格式(可根据业务修改数据类型)。

3. 数据读取的范围
sheet.AllocatedRange 返回已使用的单元格区域(包含数据的最大矩形),比直接遍历全部行列更高效。注意 RowCountColumnCount 是基于 1 的计数。

4. 参数化插入
使用 ? 占位符配合 cursor.execute(insert_sql, row_data) 能自动处理字符串转义,避免因 Excel 单元格内容包含单引号导致的 SQL 错误,同时防范注入风险。

四、扩展:适配其他数据库

只需修改数据库连接部分,即可迁移到 MySQL、PostgreSQL 等。注意不同数据库的标识符引用符不同(MySQL 用反引号 `,PostgreSQL 用双引号 "),以及字段类型映射的差异。例如连接 MySQL:

import pymysql
conn = pymysql.connect(host='localhost', user='root', password='123456', db='test')
cursor = conn.cursor()
# 建表时将 [field] 改为 `field`

结语

本文实现了一套轻量化、高可用的 Excel 数据导入数据库方案,核心优势为多工作表自动适配、动态表结构生成、安全的数据插入,代码简洁且易于二次开发。方案适用于日常数据迁移、报表导入等轻量级场景,无需复杂配置即可快速落地使用。

如何将数据导入SQLite数据库

以下内容为扩展知识,关于如何将数据导入SQLite数据库中。

我注意到您的消息似乎不完整。如何将数据导入SQLite数据库?

请提供更多信息,例如:

  • 您要导入什么格式的数据(CSV、JSON、SQL文件等)?
  • 您使用的操作系统和编程环境(Python、命令行等)?
  • 具体的导入需求或遇到的问题

同时,我可以先提供几种常见的导入SQLite数据库的方法:

1. 命令行导入CSV文件

sqlite3 database.db
.mode csv
.import data.csv table_name

2. 使用Python导入

import sqlite3
import pandas as pd
# 读取CSV并导入
df = pd.read_csv('data.csv')
conn = sqlite3.connect('database.db')
df.to_sql('table_name', conn, if_exists='replace', index=False)

3. 导入SQL文件

sqlite3 database.db < dump.sql

请补充您的具体需求,我会提供更精确的帮助!

到此这篇关于使用 Python 将 Excel 数据批量导入到SQLite数据库中的文章就介绍到这了,更多相关Python Excel 数据导入数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python Poetry实现高效依赖管理的新手指南

    Python Poetry实现高效依赖管理的新手指南

    这篇文章主要为大家详细介绍了Python如何使用Poetry实现高效依赖管理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-05-05
  • 浅谈关于Python3中venv虚拟环境

    浅谈关于Python3中venv虚拟环境

    这篇文章主要介绍了浅谈关于Python3中venv虚拟环境,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • Python+Turtle绘制可爱的小蜜蜂详解

    Python+Turtle绘制可爱的小蜜蜂详解

    turtle库是一个点线面的简单图像库,在Python2.6之后被引入进来,能够完成一些比较简单的几何图像可视化。本文将利用turtle绘制一个可爱的小蜜蜂,感兴趣的可以试一试
    2022-05-05
  • Python自动化操作实现图例绘制

    Python自动化操作实现图例绘制

    这篇文章主要介绍了Python自动化操作实现图例绘制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Python 命令行参数sys.argv

    Python 命令行参数sys.argv

    命令行参数是通过sys.argv[]来获取的,sys.argv[0]是代码文件本身的路径,因此参数是从1开始的。比如设置参数为: spe
    2008-09-09
  • 使用pytorch加载并读取COCO数据集的详细操作

    使用pytorch加载并读取COCO数据集的详细操作

    这篇文章主要介绍了使用pytorch加载并读取COCO数据集,基础知识包括元祖、字典、数组,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • Pytorch搭建yolo3目标检测平台实现源码

    Pytorch搭建yolo3目标检测平台实现源码

    这篇文章主要为大家介绍了Pytorch搭建yolo3目标检测平台实现源码,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 详解centos7+django+python3+mysql+阿里云部署项目全流程

    详解centos7+django+python3+mysql+阿里云部署项目全流程

    这篇文章主要介绍了详解centos7+django+python3+mysql+阿里云部署项目全流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • python 与服务器的共享文件夹交互方法

    python 与服务器的共享文件夹交互方法

    今天小编就为大家分享一篇python 与服务器的共享文件夹交互方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Ollama Python 使用小结

    Ollama Python 使用小结

    Ollama提供了Python SDK,使得开发者能够在Python环境中轻松集成和使用本地运行的模型进行自然语言处理任务,具有一定的参考价值,感兴趣的可以了解一下
    2025-03-03

最新评论