接到一个任务,将本地的表格文件上传到服务器的MySQL数据库中。
我查了网上的一些资料,基本上都是先将文件转为.csv文件,然后利用scp读入到服务器,最后在数据库中建表,和运行脚本读入。所以我采用了如下做法:
一、先利用python脚本将本地的表格文件转为.csv文件。
这个代码其实蛮简单的,就是调用了一个pandas数据处理库。
import pandas as pd
# 读取Excel文件,将路径修改为你自己要转换的那个文件路径就好。
df = pd.read_excel("C:\\xxx\\xxxx\\工作簿1.xlsx")
# 保存为CSV文件,选择一个保存路径。
df.to_csv('C:\\xxx\\xxxx\\工作簿1.csv', index=False)
如果你有一整个要读取的文件夹。或者是xlsx里面有好多要读取的小表格,你可以在里面加一个循环,就省得每次都要修改路径。
import pandas as pd
# 读取 Excel 文件,我这个是一个表格里面有多个表格的情况。
file_path = "C:\\xxx\\xxxx\\工作目录一.xlsx" # 替换为你的 Excel 文件路径
xls = pd.ExcelFile(file_path)
#保存的文件夹路径
output_directory = 'C:\\xxx\\xxxx\\工作目录一.csv'
os.makedirs(output_directory, exist_ok=True)
# 遍历每个工作表,并保存为 CSV 文件
for sheet_name in xls.sheet_names:
df = pd.read_excel(xls, sheet_name)
# 构建 CSV 文件的完整路径
csv_file_path = os.path.join(output_directory, f'{sheet_name}.csv')
df.to_csv(csv_file_path, index=False) # 保存为 CSV 文件
这样就把xlsx文件转换为了csv文件。
二、然后利用本地的scp工具将转换好的文件传输到服务器上。
传输过来以后一定要记得你保存的路径!!!同时你可以将你自己本地写好的要读入数据库的脚本也传输过来。
这个是读取服务器中刚刚存入的csv,存入数据库的代码。
import pandas as pd
from sqlalchemy import create_engine
# 读取CSV的文件路径
df = pd.read_csv("C:\\xxxx\\table1.csv") # 替换为你的 CSV 文件路径
# 创建数据库连接
engine = create_engine('mysql+mysqlconnector://数据库名:数据库密码@服务器IP:3306/要存入的数据库名')
# 将数据写入已存在的 MySQL 数据库表
df.to_sql('表名', con=engine, index=False, if_exists='append') # 使用 'append' 追加数据
代码中append是因为我之前现在数据库中写了建表语句,所以append只是将表中追加数据;你也可以将appen用replace替换直接生成表并且导入数据库,不过这样写的话表中的数据都是text类型,会大大占用你的数据库内存。
备注:脚本代码可以根据你的需求自行修改,我这代码就是最基本的代码,转出来的csv文件可以自己先修改一下,比如一些有空格这类的在读入数据库时很容易引起报错,然后还有一些小错误,自己可以修改自己的脚本代码,省的去一个个修改数据库表结构。