资源简介
使用python3导入excel文件到mysql。资源包含(excel文件,python源码,建表语句),使用多线程,一分钟一万条的速度(无大字段)
代码片段和文件信息
import pymysql # 操作mysql的模块
import openpyxl # xlsx格式对应的操作模块
import time
import threadpool # 线程池模块
import math
from datetime import datetime
successList = [] # 储存每个线程成功的数目,用于统计
def readRow(rows):
conn = pymysql.connect(host=“192.168.0.243“port=3306user=“root“passwd=“root“db=“mydb“charset=“utf8“)
cur = conn.cursor() # 获取游标
num = 0
for row in rows:
itemNo = row[0].value if row[0].value != None else 111
itemName = row[1].value.replace(“‘“““) if row[1].value != None else ““
itemName = itemName.replace(“\\“ “|“)
pym = row[2].value.replace(“‘“““) if row[2].value != None else ““
pym = pym.replace(“\\“ “|“)
itemSize = row[3].value.replace(“‘“““) if row[3].value != None else ““
itemSize = itemSize.replace(“\\“ “|“)
unitNo = row[4].value.replace(“‘“““) if row[4].value != None else ““
unitNo = unitNo.replace(“\\“ “|“)
productArea = row[5].value.replace(“‘“““) if row[5].value != None else ““
productArea = productArea.replace(“\\“ “|“)
args = (itemNoitemNamepymitemSizeunitNoproductArea)
try:
sql = r‘‘‘
insert into bar_code_dcm1 (itemNoitemNamepymitemSizeunitNoproductArea)
values
(%s‘%s‘‘%s‘‘%s‘‘%s‘‘%s‘)
‘‘‘ % args
# print(sql “\r\n----------------------------------------------------------“)
cur.execute(sql)
conn.commit()
num = num +1
except Exception as e:
print(Exception e“SQL:%s “ % sql)
else:
pass
finally:
pass
if num % 1000 == 0:
print(“---当前线程已导入:“ num“ 条 %s“ % time.strftime(“%Y-%m-%d %H:%M:%S“ time.localtime()) )
successList.append(num)
conn.close()
# time.sleep(1)
def excel2Mysql(excelFileName):
wb = openpyxl.load_workbook(excelFileName) #打开excel文件 ;16.5s
sheetList = wb.get_sheet_names()#获取工作簿所有工作表名
for sheetName in sheetList: # 遍历,每一个工作簿
sheetObj = wb.get_sheet_by_name(sheetName) #获取工作簿对象
rows = sheetObj.iter_rows()
bigList = [] # 每个元素为一行excel表格内容
poolArgsList = [] # 每个元素为一万行excel表格内容传递给线程池的集合
for row in rows:
if len(row[0].value) != 13: # 过滤掉不标准的条形码数据(标准数字条形码长度为13)
continue
else:
bigList.append(row)
cycle = math.ceil(len(bigList) / 10000)
for index in range(1cycle+1):
thisList = bigList[(index-1)*10000:index*10000] # list切片
poolArgsList.append(thisList)
pools = threadpool.ThreadPool(10) # 初始化10个线程(不一定全用上,python会自己调度,最好是1w数据对应1个线程)
print(“-*-数据读取,组装完毕-*-*-*开启 %d 个线程-*-*-*- \n\r“ % 10)
tasks = threadpool.makeRequests(readRow poolArgsList) # 创建任务(处理函数,可迭代对象),每一个迭代元素即为处理函数的参数
[pools.putRequest(task) for task in tasks] # 线程池和任务都有了,将任务放入线程池中,执行
pools.wait()
wb.close()
if __name__ == ‘__main__‘:
startTime = datetime.now()
excelFileName = “C:/Users/xusanduo/Desktop/excelData/50-55w.xlsx“
print(“[ %s ] [ 开始导入 %s “ % ( time.strftime(“%Y-%m-%d %H:%M:%S“ time.localtime() ) excelFileName)“文件 ]“ )
excel2Mysql(excelFileName)
endTime = datetime.now()
print( “[ %s ] %s
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 26862687 2017-06-30 14:57 导入excel内容到mysql例子\1-54w.xlsx
文件 3667 2017-08-31 13:52 导入excel内容到mysql例子\excelToMysql.py
文件 948 2017-11-08 10:02 导入excel内容到mysql例子\表结构.txt
目录 0 2017-11-08 10:03 导入excel内容到mysql例子
----------- --------- ---------- ----- ----
26867302 4
相关资源
- python实现SGBM图像匹配算法
- python实现灰度直方图均衡化
- scrapy_qunar_one
- Python学习全系列教程永久可用
- python简明教程.chm
- 抽奖大转盘python的图形化界面
- 双边滤波器实验报告及代码python
- python +MYSQL+HTML实现21蛋糕网上商城
- Python-直播答题助手自动检测出题搜索
- OpenCV入门教程+OpenCV官方教程中文版
- Python 串口工具源码+.exe文件
- Python开发的全栈股票系统.zip
- Python操作Excel表格并将其中部分数据写
- python书籍 PDF
- 利用python绘制散点图
- python+labview+No1.vi
- 老男孩python项目实战
- python源码制作whl文件.rar
- python3.5可用的scipy
- PYTHON3 经典50案例.pptx
- 计算机科学导论-python.pdf
- python模拟鼠标点击屏幕
- windows鼠标自动点击py脚本
- 鱼c小甲鱼零基础学python全套课后题和
- Python 练习题100道
- Practical Programming 2nd Edition
- wxPython Application Development Cookbook
- python 3.6
- Python 3.5.2 中文文档 互联网唯一CHM版本
- python3.5.2.chm官方文档
评论
共有 条评论