1. 程式人生 > >批量向mysql資料庫匯入資料夾中的excl檔案(方法2)

批量向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:
[email protected]
:3306/test?charset=utf8') # //username:[email protected]地址:埠號/資料庫名字?字元編碼 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%

用這種方法和上一次寫的方法差不多,就是程式碼稍微簡單些