批量读取excel 写入mysql 列名和数量不相同
时间: 2023-09-04 17:10:09 浏览: 113
如果要批量读取 Excel 并将数据写入 MySQL,但是 Excel 文件中的列数和列名与 MySQL 表不匹配,可以使用 Pandas 的 rename 和 reindex 方法进行调整。
具体步骤如下:
1. 首先需要安装 Pandas 和 xlrd 模块:
```
pip install pandas xlrd
```
2. 创建数据库连接:
```
from sqlalchemy import create_engine
engine = create_engine('数据库类型+数据库驱动://用户名:密码@IP地址:端口号/数据库名称')
```
3. 批量读取 Excel 文件:
```
import pandas as pd
# 获取 Excel 文件名列表
file_list = ['file1.xlsx', 'file2.xlsx', ...]
# 定义要读取的列名和列顺序
col_names = ['列名1', '列名2', ...]
# 定义要写入的表名
table_name = '表名'
# 循环读取 Excel 文件并写入数据库
for file_name in file_list:
# 读取 Excel 文件
df = pd.read_excel(file_name)
# 调整列名和列顺序
df = df.rename(columns={'旧列名1': '新列名1', '旧列名2': '新列名2', ...})
df = df.reindex(columns=col_names)
# 将数据写入 MySQL
df.to_sql(name=table_name, con=engine, if_exists='append', index=False, chunksize=10000)
```
需要注意的是,调整列名和列顺序后,DataFrame 的列数和名称必须与 MySQL 表的列数和名称相匹配,否则会写入失败。另外,循环读取多个 Excel 文件时,需要确保每个文件的列数和列名是相同的。
阅读全文