mysql导入excel文件z.py 5.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. # -*- codeing = utf-8 -*-
  2. # @Time : 2021/5/15 12:55
  3. # @Author : Clown
  4. # @File : mysql导入excel文件.py
  5. # @Software : PyCharm
  6. import pymysql
  7. import xlrd
  8. import os
  9. import time
  10. import hashlib
  11. # 连接数据库
  12. try:
  13. db = pymysql.connect(host="localhost", user="root",
  14. passwd="111???hxx",
  15. db="zuzu_data",
  16. charset='utf8mb4')
  17. print('connect to mysql server 成功')
  18. print('------------------------------------')
  19. except:
  20. print("could not connect to mysql server")
  21. def open_excel(file):
  22. try:
  23. book = xlrd.open_workbook(file) # 文件名,把文件与py文件放在同一目录下
  24. except:
  25. print("open excel file failed!")
  26. try:
  27. sheet = book.sheet_by_name("Sheet1") # execl里面的worksheet1
  28. return sheet
  29. except:
  30. print("locate worksheet in excel failed!")
  31. #
  32. #
  33. def insert_deta(file):
  34. sheet = open_excel(file)
  35. cursor = db.cursor()
  36. row_num = sheet.nrows
  37. for i in range(1, row_num): # 第一行是标题名,对应表中的字段名所以应该从第二行开始,计算机以0开始计数,所以值是1
  38. row_data = sheet.row_values(i)
  39. value = (row_data[0], row_data[1], row_data[2], row_data[3], row_data[4], row_data[5], row_data[6], row_data[7], row_data[8], row_data[9], row_data[10], row_data[11], row_data[12], row_data[13], row_data[14], row_data[15], str(int(float(row_data[16]))), row_data[17], str(int(float(row_data[18]))), row_data[19], row_data[20], row_data[21], row_data[22], row_data[23], row_data[24], row_data[25], row_data[26], row_data[27])
  40. per = i/(row_num-1)*100
  41. print('\r 已导入%s行,共计%s行,已完成%2d%%'%(str(i),str(row_num-1),per),end='')
  42. sql = "INSERT INTO order_forms_zzx VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
  43. #('日期','订单编号','下单时间','商品原价','包装费','配送费','订单原价','顾客实付','商家实收','商家总活动支出','佣金','用户ID','用户地址经纬度','配送时长','平台','城市','食亨门店id','食亨门店名称','平台门店id','平台门店名称','1级组织','2级组织','3级组织','4级组织','5级组织','6级组织','7级组织','8级组织')
  44. cursor.execute(sql, value) # 执行sql语句
  45. db.commit()
  46. cursor.close() # 关闭连接
  47. def insert_deta1(file):
  48. sheet = open_excel(file)
  49. cursor = db.cursor()
  50. row_num = sheet.nrows
  51. for i in range(1, row_num): # 第一行是标题名,对应表中的字段名所以应该从第二行开始,计算机以0开始计数,所以值是1
  52. n = (str(i)).zfill(10)
  53. time_str = str(int(time.time())) + n
  54. # print(time_str)
  55. row_data = sheet.row_values(i)
  56. # 定义hash值
  57. md5 = hashlib.md5()
  58. md5.update(row_data[3].encode('utf-8'))
  59. # 将【标准商品名称】改为hash值
  60. value = (time_str,row_data[0], row_data[1], md5.hexdigest(), row_data[3], row_data[4], row_data[5], row_data[6], row_data[7], row_data[8], str(int(float(row_data[9]))), row_data[10], str(int(float(row_data[11]))), row_data[12], row_data[13], row_data[14], row_data[15], row_data[16], row_data[17], row_data[18], row_data[19], row_data[20])
  61. per = i / (row_num - 1) * 100
  62. print('\r 已导入%s行,共计%s行,已完成%2d%%'%(str(i),str(row_num-1),per),end='')
  63. sql = "INSERT INTO order_formsgoods_zzx VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
  64. #('日期','订单编号','下单时间','商品原价','包装费','配送费','订单原价','顾客实付','商家实收','商家总活动支出','佣金','用户ID','用户地址经纬度','配送时长','平台','城市','食亨门店id','食亨门店名称','平台门店id','平台门店名称','1级组织','2级组织','3级组织','4级组织','5级组织','6级组织','7级组织','8级组织')
  65. cursor.execute(sql, value) # 执行sql语句
  66. db.commit()
  67. cursor.close() # 关闭连接
  68. #
  69. #
  70. if __name__ == '__main__':
  71. file_name = r'/home/python_flies/orderFormsSplit_goods_zxx'# 订单详情明细z 、订单详情z
  72. for a,b,files in os.walk(file_name,topdown = False):
  73. for file in files:
  74. path = str(file_name)+'/'+str(file)
  75. print('%s 正在导入Mysql'%str(file))
  76. open_excel(path)
  77. insert_deta1(path)#订单详情明细insert_deta1、订单详情insert_deta
  78. print('\n %s 导入Mysql完毕'%str(file))
  79. print('------------------------------------')
  80. file_name = r'/home/python_flies/orderFormsSplit_forms_zxx'# 订单详情明细z 、订单详情z
  81. for a,b,files in os.walk(file_name,topdown = False):
  82. for file in files:
  83. path = str(file_name)+'/'+str(file)
  84. print('%s 正在导入Mysql'%str(file))
  85. open_excel(path)
  86. insert_deta(path)#订单详情明细insert_deta1、订单详情insert_deta
  87. print('\n %s 导入Mysql完毕'%str(file))
  88. print('------------------------------------')