Python讀取CSV檔案寫入Mysql資料庫
阿新 • • 發佈:2020-10-31
環境
win10
python3.7
mysql5.7
方法
pymysql
pip install pymysql
xxx.py
# -*- coding:utf-8 -*- import pandas as pd import pymysql import time, datetime def get_data(file_name): # 用pandas讀取csv # data = pd.read_csv(file_name,engine='python',encoding='gbk') data = pd.read_csv(file_name,engine='python') print (data.head(5)) #列印前5行 # 資料庫連線 conn = pymysql.connect( user="使用者名稱", port=埠, passwd="密碼", db="資料庫名", host="127.0.0.1", charset = 'utf8' ) # 使用cursor()方法獲取操作遊標 cursor = conn.cursor() # 資料過濾,替換 nan 值為 None data = data.astype(object).where(pd.notnull(data), None) for ID,CREATE_DATE,CREATE_USER_ACCOUNT,UPDATE_DATE,UPDATE_USER_ACCOUNT,TASK_ID,USER_ACCOUNT,USER_PERSON_TYPE_ID,USER_NAME,COOPERATIVE_MEMBER in zip(data['ID'],data['CREATE_DATE'],data['CREATE_USER_ACCOUNT'],data['UPDATE_DATE'],data['UPDATE_USER_ACCOUNT'],data['TASK_ID'],data['USER_ACCOUNT'],data['USER_PERSON_TYPE_ID'],data['USER_NAME'],data['COOPERATIVE_MEMBER']): CREATE_DATE = format_date(CREATE_DATE) # 這裡由於對日期有特殊需求,自己處理了一下,程式碼就不貼了,如無需要可略過。 dataList = [ID,CREATE_DATE,CREATE_USER_ACCOUNT,UPDATE_DATE,UPDATE_USER_ACCOUNT,TASK_ID,USER_ACCOUNT,USER_PERSON_TYPE_ID,USER_NAME,COOPERATIVE_MEMBER] print (dataList) # 插入的值 try: insertsql = "INSERT INTO sw_task_member_asign(ID,CREATE_DATE,CREATE_USER_ACCOUNT,UPDATE_DATE,UPDATE_USER_ACCOUNT,TASK_ID,USER_ACCOUNT,USER_PERSON_TYPE_ID,USER_NAME,COOPERATIVE_MEMBER) VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)" cursor.execute(insertsql,dataList) conn.commit() except Exception as e: print ("Exception") print (e) conn.rollback() cursor.close() # 關閉資料庫連線 conn.close() def main(): # 讀取資料 get_data('xxx.csv') if __name__ == '__main__': main()
注:讀取大檔案可以用load data
匯入,但自己並沒有嘗試成功。寫的時候也碰了些坑,搜了不少部落格並不適合自己,總會出現各種問題,上述程式碼可能只並不適配所有場景,僅供參考。
.end