咔片PPT · AI自动生成演示文稿,模板丰富、排版精美 讯飞智文 · 一键生成PPT和Word,高效应对学习与办公


""" 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)