批量向mysql数据库导入文件夹中的excl文件(方法2)

前一篇是直接将excl文件导入到数据库中,这次是现将excl文件转化成Dataframe格式的,然后直接导入mysql数据库(有现成函数哦)

import numpy as np
import pandas as pd
import pymysql
from sqlalchemy import create_engine
import time
import os


def export(Folder_file):
    
    excel_files = sorted(os.listdir(Folder_file), key=lambda x: int(x[:-5]))
    excel_files = [Folder_file + '\\' + i for i in excel_files]
    print(excel_files)
    engine = create_engine(
        'mysql+pymysql://root:root@localhost:3306/test?charset=utf8')  # //username:password@地址:端口号/数据库名字?字符编码

    for excel_file in excel_files:
        start = time.time()


        df1 = pd.read_excel(excel_file)
        df1 = df1.rename(columns={'排班值守(值守姓名)':"排班值守",'投件量-中箱格':"投件量_中箱格",'投件量-大箱':"投件量_大箱",'投件量-小箱格':"投件量_小箱格",'取件量-付费取件':"取件量_付费取件",'投件率-大箱':"投件率_大箱",'投件率-中箱格':"投件率_中箱格",'投件率-小箱格':"投件率_小箱格",'滞留件数量(96小时)':"滞留件数量_96小时",})
        print('叮!开始导入...')
        df1.to_sql('2018设备大表_copy', engine, index = False, if_exists = 'append')
        end = time.time()

        print("excl: " + excel_file + " has been inserted " + str(df1.iloc[:,1].count()) + " datas!")
        print("excl: " + excel_file + " has been costed %s s" % (end - start))
        print('There is a total %d has been imported  %d 个表,Completion degree %d%%' % (
            len(excel_files), (excel_files.index(excel_file) + 1),
            (excel_files.index(excel_file) + 1) * 100 / len(excel_files)))


if __name__ =="__main__":
    first = time.time()
    filename = r'C:\Users\lenovo\Desktop\test'
    export(filename)

    last = time.time()

    print('这件事共用时 %f h' % round((last - first) / 3600, 2))

结果:

['C:\\Users\\lenovo\\Desktop\\test\\1.xlsx', 'C:\\Users\\lenovo\\Desktop\\test\\2.xlsx', 'C:\\Users\\lenovo\\Desktop\\test\\3.xlsx', 'C:\\Users\\lenovo\\Desktop\\test\\4.xlsx', 'C:\\Users\\lenovo\\Desktop\\test\\5.xlsx']
叮!开始导入...
excl: C:\Users\lenovo\Desktop\test\1.xlsx has been inserted 78702

excl: C:\Users\lenovo\Desktop\test\1.xlsx has been costed 134.94471859931946 s
There is a total 5 has been imported  1 个表,Completion degree  20%

用这种方法和上一次写的方法差不多,就是代码稍微简单些 

猜你喜欢

转载自blog.csdn.net/HUIxihuanni/article/details/84996948
今日推荐