"""
python读取超大excel文件写入数据库
excel文件:963592行(103个字段),506M
pycharm环境实测结果
读取文件耗时962.133秒钟,数据入库耗时1014.695秒钟(每1000次提交)
读取文件耗时948.566秒钟,数据入库耗时 929.869秒钟(每2000次提交)
读取文件耗时675.909秒钟,数据入库耗时 954.594秒钟(每3000次提交)
cmd环境实测结果
读取文件耗时1028.828秒钟,数据入库耗时1047.366秒钟(每1000次提交)
读取文件耗时 921.494秒钟,数据入库耗时 909.528秒钟(每2000次提交)
读取文件耗时1131.165秒钟,数据入库耗时 965.251秒钟(每3000次提交)
"""
def read_excel_by_xlrd(file):
print("文件名[", os.path.basename(file), "]")
print("开始读取文件", datetime.datetime.now())
t0 = time.time()
wb = xlrd.open_workbook(file)
sheets = wb.sheets()
t1 = time.time()
print("完成文件读取", datetime.datetime.now())
for sheet_index in range(0, len(sheets)): # 对每个sheet分别入库
sheet = sheets[sheet_index]
wb.sheet_loaded(sheet.name) # 检查某个sheet是否导入完毕
tt0 = time.time()
print("开始对sheet[", sheet.name, "]进行入库操作", datetime.datetime.now())
mysqlHelper = mysqlConnHelper.mysqlHelper('地址', '端口号', '数据库账号', '数据库密码', '数据库名')
sql = "INSERT INTO 表名 (字段1,字段2,....) VALUES (%s, %s, ...)"
# 从表中取单元格
rowCount = sheet.nrows
columnCount = sheet.ncols
rowsdata = [] # 存放多行数据的列表
for i in range(3, rowCount): # 跳过前三行(第一、二行为空白行,第三行为标题),从第四行开始读取
rowdata = [] # 存放一行数据的列表
for j in range(0, columnCount):
rowdata.append(sheet.cell_value(i, j))
# 批量入库
rowsdata.append(tuple(rowdata))
# mysqlHelper.insertDatas(sql, rowsdata) # insertDatas入参为包含元组的列表
if i != 0 and i % 2000 == 0:
mysqlHelper.insertDatas(sql, rowsdata) # 每2000笔执行一次入库操作
rowsdata = []
print("t[", sheet.name, "]数据入库进度[", i, "/", rowCount - 3, "]")
if len(rowsdata) != 0: # 批量入库最后再执行一次批处理提交操作
mysqlHelper.insertDatas(sql, rowsdata) # insertDatas入参为包含元组的列表
print("t[", sheet.name, "]数据入库进度[", rowCount - 3, "/", rowCount - 3, "]")
tt1 = time.time()
print("t[", sheet.name, "]入库完成, 耗时%0.3f秒" % (tt1 - tt0), datetime.datetime.now())
t2 = time.time()
print('读取文件耗时%0.3f秒(%0.3f分钟)' % ((t1 - t0), (t1 - t0) / 60))
print('数据入库耗时%0.3f秒(%0.3f分钟)' % ((t2 - t1), (t2 - t1) / 60))
print('共耗时%0.3f秒(%0.3f分钟)' % ((t2 - t0), (t2 - t0) / 60))
if __name__ == '__main__':
file = r'F:Download数据.xlsx'
read_excel_by_xlrd(file)
python读取超大excel文件入库(实测有效)
咔片PPT · AI自动生成演示文稿,模板丰富、排版精美
讯飞智文 · 一键生成PPT和Word,高效应对学习与办公