首页 > 其他分享 >探究-百万级别excel数据的导入导出

探究-百万级别excel数据的导入导出

时间:2024-05-23 16:57:36浏览次数:18  
标签:excel 导出 探究 导入 数据 级别 百万


思路:
1.从数据库中读,分批次读取
2.多线程去写到一个excel中,
3.网页如何不卡界面的方式,下载文件

界面显示进度条,不影响主界面,下载完成,网站弹出小框口提示


百万级别数据导入导出如何优化?
excel导入导出;

痛点:
1.导入百万级别数据(excel)到DB,有哪些痛点?
1)一次加载百万级别数据到内存,发生OOM!
2)导入百万界别数据存储到DB如果循环一条一条插入,数据库链接不够用
2.导出百万级别数据(DB)到excel,有什么痛点呢?
1)一次性查询百万级别数据到内存,数据库查询超时
2)一次性加载百万级别数据到内存,发生OOM
3)百万级别数据导出到Excel,能写到一个sheet中?,能打开吗?不卡吗?
4)百万级别数据导出到excel中一行一行写入excel,频繁io操作,CPU飙高
3.业务操作高峰期,后台管理员频繁操作导入导出excel,系统很容易因为内存溢出挂掉!

如何解决这些痛点呢?
1.选用合适的excel开源处理框架 阿里的easyexcel
2.百万级别数据导入方案
逐行解析excel数据,分批读取excel数据到list,list达到一定数据量后持久化到DB,同时清空list列表数据
3.百万级别导出方案
分批分页查询DB数据到内存,比如一次查询5000条,分20次分批查询出来
每次加载指定大小的数据到内存,比如每次5000条,5000条批量写入到excel以后,清空当前list,释放内存;
分多个sheet写入,每个sheet比如放20w,100w数据放5个sheet;
每次从数据库批量读取指定大小的数据写入excel
4.解决高峰期导入导出资源瓶颈
从产品方面涉及的时候,引导产品,将导入导出功能设计成异步,尽量不要同步等待,虽然牺牲了一点体验,但是长期看对系统的稳定非常重要;
前端导入导出按钮操作的频率,比如10分钟内不能频繁导入导出
后端导入导出采用MQ异步排队处理,防止内存写爆,CPU打满
采用动态配置开关控制导入导出的数量,通过压测预估系统处理数据的阈值默认配置一个,导入导出超出阈值需要产品或运营发邮件申请,开发修改配置;
如果业务确实有超大数据量请求,超过阈值太多,引导产品或运营分批导入导出解决;

导入导出模块-》记录所有导入导出的进度;

 

思考:

1.用户操作导出功能,等待过程中,用户关闭了系统,服务器上,这个导出命令会怎么样?

2.

标签:excel,导出,探究,导入,数据,级别,百万
From: https://www.cnblogs.com/hcy-zyy/p/18185379

相关文章

  • 记录一个按列内容拆分Excel文件的小方法
    importtkinterastkimportosimporttkinter.filedialogimporttkinter.simpledialogimportpandasaspdimporttkinter.messageboximporttkinter.ttkimporttracebackglobalcolumn,sheet_origlobalcombox_2#按内容分类defsplit_by_group():#获取需......
  • 记录一个按文档长度分割Excel文件的方法
    importtkinterastkimportpandasaspdimporttkinter.filedialogimportosimporttracebackwindows=tk.Tk()####按长度拆分——自定义函数##拆分函数defdivision_by_length(iterable,length):iterable_len=len(iterable)start=0while1:......
  • 记录一次Xlwings操作excel替换内容
    importosimporttkinter.filedialogimportxlwingsasxwclassSubstitute:path=tkinter.filedialog.askdirectory(title='!!!!!!!!!!!!!!!!!请选择excel存放路径')#修改此处替换文本,前为原文本,后为新文本,最后一组后面不需要逗号dict1={'购销合同':'买卖合同','货物运输合......
  • 2024版Pycharm导入conda环境
    旧版与新版的区别大致就是旧版借用python.exe文件来导入虚拟环境,而现在的新版本需要借用Anaconda3文件中的condabin文件夹中的conda.bat文件来导入已创建的虚拟环境。(1)进入设置(2)选择interpreter  (3)选择conda环境 首先浏览到condabin的位置,选择conda;然后点击加载环境,而......
  • winform开发excel
         Excel的二次开发方法有很多,下面主要介绍一个asponse.cell的使用方法,通过winform制造excel的小软件进行处理excel。 软件主要功能是先检查三个表中数据是否正确,比如是表头及列头等,然后将切割表和材料的数据进行组合,存放到数据跟踪表里。下面是加载到内存过程  ......
  • C#使用开源操作库MiniExcel操作Excel
    简介MiniExcel简单、高效避免OOM的.NET处理Excel查、写、填充数据工具。目前主流框架大多需要将数据全载入到内存方便操作,但这会导致内存消耗问题,MiniExcel尝试以Stream角度写底层算法逻辑,能让原本1000多MB占用降低到几MB,避免内存不够情况。特点低内存耗用,避免OOM、频繁F......
  • Ement-Plus框架的列表table导出excel数据表
    1.页面预览2.搜索条件区域code <!--查询--><divclass="table-container"><el-form:inline="true":model="queryForm"class="query-form"ref="queryFormRef"><el-form-itemlabe......
  • Excel提高效率和二次开发
       在我们实际工作或生活,很多地方用到excel,excel可存放和管理大量数据。一般情况下,我们可以用excel内置的公司进行处理,比如常用的sum函数求和和vlookup函数进行匹配等,公式几乎可以处理日常生活的任何事情。但是有时候会遇到一些大量或重复的工作,比如要实现对某些数据进复杂......
  • java+mybatis+easyExcel快速导入excel数据到MySQL
    这里有一些数据需要导入数据库。demo地址:importExcel使用步骤如下:一、修改database相关内容 1.修改application.properties文件中数据库地址及信息二、新建实体类1.新建excel数据所符合的实体类,这里举例Excel中有如下数据,表头字段为“username”。数据......
  • excel中stdev与stdevp函数的区别
    STDEVP和STDEV的区别是什么-CSDN博客STDEVP和STDEV都是Excel函数,用于计算一个样本的标准差。但是它们有一个重要的区别:STDEVP函数使用总体样本的样本数,而STDEV函数使用实际样本的样本数。举个例子,假设你有一个样本,其中有10个数据点。如果你使用STDEVP函数计算标准差......