Python3批量将Excel中数据插入到mysql5.7数据库

ops/2024/12/16 9:21:59/

需求:

Excel(.xlsx)中约有1000多万条数据,需要将数据插入到mysql数据库中,excel中第一个sheet页有表头,后面35个sheet页没有表头,需要将所有sheet页中的数据批量插入数据库

实现

安装依赖:

pip install pandas
pip install openpyxl
pip install mysql-connector-python

python_10">python脚本

python">import pandas as pd
import mysql.connector# 配置 MySQL 连接
def get_mysql_connection():return mysql.connector.connect(host='192.168.1.1',user='用户',password='密码',database='数据库',port= 端口号)
# 批量插入数据到 MySQL
def insert_data_to_mysql(df, conn, batch_size=5000):cursor = conn.cursor()# 插入 SQL 语句,假设 temp 表结构为 (cons_id, record_date, record_usage)insert_sql = "INSERT INTO temp11 (cons_id, record_date, record_usage) VALUES (%s, %s, %s)"# 将 DataFrame 转换为列表格式data = df[['OBJ_NO', 'DATE', 'VALUE']].values.tolist()  # 只提取这三列# 分批插入for i in range(0, len(data), batch_size):batch_data = data[i:i + batch_size]cursor.executemany(insert_sql, batch_data)  # 批量插入conn.commit()  # 提交事务print(f"批量插入了 {len(batch_data)} 条数据")# 读取 Excel 所有 sheet 页并插入 MySQL
def insert_excel_data_to_mysql(excel_file, conn, batch_size=5000):# 读取 Excel 文件中所有的 sheet,返回一个字典 {sheet_name: DataFrame}df_dict = pd.read_excel(excel_file, sheet_name=None, engine='openpyxl')# 第一个 sheet 页处理(读取表头)first_sheet_name = list(df_dict.keys())[0]first_df = df_dict[first_sheet_name]# 处理后续的 sheet 页(没有表头)for sheet_name, df in df_dict.items():print(f"正在处理 sheet: {sheet_name}")# 如果是第一个 sheet,处理表头if sheet_name == first_sheet_name:df.columns = ['DATA_ID', 'OBJ_NO', 'OBJ_NAME', 'OBJ_TYPE', 'DATA_CODE', 'DATE', 'VALUE']# 处理后续 sheet(没有表头,直接为列名)else:df.columns = ['DATA_ID', 'OBJ_NO', 'OBJ_NAME', 'OBJ_TYPE', 'DATA_CODE', 'DATE', 'VALUE']# 提取所需的三列df_filtered = df[['OBJ_NO', 'DATE', 'VALUE']]# 插入数据到 MySQL,按批量大小进行插入insert_data_to_mysql(df_filtered, conn, batch_size)# 关闭 MySQL 连接
def close_connection(conn):conn.close()if __name__ == "__main__":# 数据库连接conn = get_mysql_connection()try:# 指定 Excel 文件路径excel_file = '/Users/xxx/datas.xlsx'# 批量大小,默认 1000 条batch_size = 5000# 将 Excel 数据批量插入 MySQLinsert_excel_data_to_mysql(excel_file, conn, batch_size)finally:# 关闭连接close_connection(conn)

http://www.ppmy.cn/ops/142340.html

相关文章

ChatGPT突然全球宕机,OpenAI致歉:并查明原因,正积极修复

ChatGPT突然全球宕机,OpenAI致歉:并查明原因,正积极修复 在 2024 年 12 月 12 日上午的北京时间时段内,ChatGPT突发全球宕机,OpenAI致歉:已查明原因,正积极修复 官方证实了其备受瞩目的聊天机器…

Kubernetes 常用操作大全:全面掌握 K8s 基础与进阶命令

Kubernetes(简称 K8s)作为一种开源的容器编排工具,已经成为现代分布式系统中的标准。它的强大之处在于能够自动化应用程序的部署、扩展和管理。在使用 Kubernetes 的过程中,熟悉常用操作对于高效地管理集群资源至关重要。本文将详…

光谱相机

光谱相机是一种能够同时获取目标物体的空间图像信息和光谱信息的成像设备。 1、工作原理 光谱相机通过光学系统将目标物体的光聚焦到探测器上,在探测器前设置分光元件,如光栅、棱镜或滤光片等,将光按不同波长分解成多个光谱通道&#xff0c…

MySQL其四,各种函数,以及模拟了炸裂函数创建用户等操作

目录 一、MySQL中的函数 1、IFNULL 2、IF 3、case (难点) 4、exists(难) --存在的意思 二、常见的函数 1、字符串函数 2、数学函数 3、日期函数 (使用频率不是很高) 4、其他函数 5、关于字符集的问题 6、mysql炸裂函数…

LinkedList与链表 和 链表面试题

目录 一. ArrayList 与 LinkedList 的优缺点: 二. LinkedList 的分类 三.链表的十道面试题: 1. 删除链表中等于给定值 val 的所有节点。题目链接 2. 反转⼀个单链表。题目链接 3. 输⼊⼀个链表,输出该链表中倒数第k个结点。题目链接 4.给定…

国信华源科技赋能长江蓄滞洪区水闸管护项目验收成果报道

“碧水悠悠绕古城,闸启长江万象新。”近日,由北京国信华源科技有限公司倾力打造的万里长江蓄滞洪区水闸管护项目,圆满通过验收,为这片鱼米之乡的防洪安全注入了新的科技活力。 长江之畔,水闸挺立,犹如干堤上…

Android显示系统(11)- 向SurfaceFlinger申请Surface

一、前言: 前面已经和SurfaceFlinger建立好了连接,那么,本章介绍下如何去向SurfaceFlinger申请我们的画布(也就是Surface)。 二、获取Surface流程: 上面创建好了Client,也就是创建好了连接,我们要绘制一张图片,首先得拿到画布,这个由CreateSurface完成: status_t…

JavaScript逆向时,常用的11个hook

提示:记录工作中遇到的需求及解决办法 文章目录 前言01、dom操作02、Cookie操作03、事件监听操作04、AJAX拦截操作05、函数替换操作06、Header操作07、URL操作08、JSON.stringify操作09、JSON.parse操作10、eval操作11、Function操作前言 在逆向分析JavaScript代码时,开发者…