欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > Python3批量将Excel中数据插入到mysql5.7数据库

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

2025/2/24 12:19:50 来源:https://blog.csdn.net/lakelise/article/details/144441153  浏览:    关键词:Python3批量将Excel中数据插入到mysql5.7数据库

需求:

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

实现

安装依赖:

pip install pandas
pip install openpyxl
pip install mysql-connector-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)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词