文档章节

多文件上传、excel多文件导入(大量数据)

奥特曼之王
 奥特曼之王
发布于 06/14 18:16
字数 624
阅读 5
收藏 0
点赞 0
评论 0
多文件上传、excel多文件导入(大量数据)
置顶2018年03月02日 14:52:32

阅读数:436

问题:多个excel文件导入(上传)

思路:由于文件选择只能单个文件选择,那么可以将excel文件一个一个上传到本地或服务器,将路径保存至数据库中,后台使用队列进行操作,即上传第一个文件时便在后台开启一条线程,注意是只开启一条如果多条会导致死锁等各种问题,开启线程后,将陆续上传的文件加入队列中,只要队列中有数据就不结束线程,直到队列中的数据全部执行完也就是前端上传的文件全部导入到数据库中就结束线程。前端提供进度条。即能上传大量数据又不影响前端页面的操作,只需查看进度条即可知道数据上传量。

效果图片:



后台实现代码:

1、将上传的文件一个个加入队列中

首先将所有上传文件存到本地或者服务器,将路径存储到数据库

String filePath = fileService.upload(FileInfo.FileType.file, file, true, null); ImportLog importLog = importLogService.putDownTask(total, file.getOriginalFilename(), filePath); importSubject.addTask(importLog);

再讲一个个存到数据库中的文件路径放到队列中。addTask();方法如下

@Resource(name = "productImportSubscriber") private ImportSubscriber importSubscriber; @Resource(name = "taskExecutor") private ThreadPoolTaskExecutor threadPool;

@Resource(name = "importEvent") private ImportEvent importEvent;

public void addTask(ImportLog importLog) { importSubscriber.add(importLog); if (!importEvent.isRunning()) { threadPool.execute(new Runnable() { @Override public void run() { importSubscriber.start(); } }); } }

判断isRunning是否在启动,所有每次只有一个文件在导入,并不会出现其他资源争抢的情况。

_/** _ * _观察者接口 _ */ public interface ImportSubscriber {

Boolean start();

**void** add(ImportLog importLog);

}

实现ImportSubscriber接口:

public static Queue queue = new LinkedList<>();

@Override public Boolean start() { importData();//此处就可以处理不同系统的业务逻辑,比如导入数据 return true; }

@Override public void add(ImportLog importLog) { queue.add(importLog); }

到这里多文件导入就结束了,从全局看,这种方式只是比较巧妙了运用了队列。比如如果你要导入一个excel文件,有100W+的数据,那么前端

会非常慢,导致那个页面除了一直导入以外什么事也做不了,那么用户体验就非常差,而这里是先将文件存储起来,

在后台慢慢执行,而前端只是给了一个进度条,可以告知用户什么时候能导入完。

 

本文转载自:https://blog.csdn.net/zhangcc233/article/details/79421783

共有 人打赏支持
奥特曼之王
粉丝 1
博文 62
码字总数 8716
作品 0
郑州
导入excel文件处理流程节点的解决方案

在没用管理系统的时候,很多企业都会将一些生产或流水线操作的数据保存在excel文件中,按名称或按sheet页形成多份excel的表格数据。 当运用了工作流管理系统后,这些生产或流水线的操作都会记...

长平狐 ⋅ 2012/10/11 ⋅ 0

结合bootstrap fileinput插件和Bootstrap-table表格插件,实现文件上传、预览、提交的导入Excel数据操作流程

1、bootstrap-fileinpu的简单介绍 在前面的随笔,我介绍了Bootstrap-table表格插件的具体项目应用过程,本篇随笔介绍另外一个Bootstrap FieInput插件的使用,整合两者可以实现我们常规的Web...

walb呀 ⋅ 2017/12/04 ⋅ 0

已经重写,源码和文章请跳转http://www.cnblogs.com/ymnets/p/5621706.html

文章由于写得比较仓促 已经重写,源码和文章请跳转 http://www.cnblogs.com/ymnets/p/5621706.html 系列目录 前言: 导入导出实在多例子,很多成熟的组建都分装了导入和导出,这一节演示利用...

文艺小青年 ⋅ 2017/07/07 ⋅ 0

将excel的数据导入到db2数据库

最近,在做一个移植的项目,其中有一个需求是:把数据仓库中的数据导入我们系统的数据库中。 背景:从数据仓库中取得数据,是以excel表格存在的。 将xls 文件另存为以csv格式的文件,test.xl...

pumpkin555 ⋅ 2014/04/27 ⋅ 0

EXTJS3 能设置自动重连?

就是一份EXCEL文件,格式内容全约束好 客户整理好内容后,上传到并要求将数据导入到库内 上传完成后,后台进行内容验证,校验是否重名、必填项是否有填等信息, 是否成功再返回给前端,不成功...

yeisou ⋅ 2012/08/15 ⋅ 5

使用phpExcel实现Excel数据的导入导出(完全步骤)

很多文章都有提到关于使用phpExcel实现Excel数据的导入导出,大部分文章都差不多,或者就是转载的,都会出现一些问题,下面是本人研究phpExcel的使用例程总结出来的使用方法,接下来直接进入...

daniel-john ⋅ 2014/03/23 ⋅ 0

如何将一个excel内的大量数据导入hdfs、或者hive?

如何处理excel文件导入hadoop集群,在hive上建表,现在据我所知hive能直接导入数据的我们常用的txt,但是还没有excel,查了几天资料,脑子一片空白,还有就是将excel转换成txt,50多M的数据,...

Haiberner ⋅ 2017/12/22 ⋅ 0

Java对象和Excel转换工具 - xxl-excel

《Java对象和Excel转换工具XXL-EXCEL》 概述 XXL-EXCEL 是在 Java 对象和 Excel 文档之间进行转换的迅速而灵活的工具。 一行代码完成Java对象和Excel之间的转换。 特性 1、Excel导出:支持J...

许雪里 ⋅ 2017/09/12 ⋅ 3

PLSQL Developer导入Excel数据

转载▼ 最近处理将Excel数据导入Oracle的工作比较多。之前都是采用Sqlldr命令行导入的方式处理。每次导入不同格式的Excel表数据,都需要先把Excel文件由“.xls”格式转换为“.csv”格式,再手...

ruanjun ⋅ 2016/08/15 ⋅ 0

PHP导入Excel和导出数据为Excel文件

有时需要将Excel表格的数据导入到mysql数据库中,我们使用PHP的一个开源项目PHP-ExcelReader可以轻松实现Excel的导入。另外将mysql数据导出为Excel与本站上篇文章中导出CSV一样,只是将逗号分...

rin9958 ⋅ 2016/06/03 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

windows profesional 2017 build problem

.net framework .... https://stackoverflow.com/questions/43330915/could-not-load-file-or-assembly-microsoft-build-frameworkvs-2017...

机油战士 ⋅ 39分钟前 ⋅ 0

python3中报错的解决方法(长期更新)

1、ImportError: No module named ‘DjangoUeditor’ 出错原因:安装DjangoUeditor库适用于python2,需要下载适用python3的 下载地址:https://github.com/twz915/DjangoUeditor3 2、python3......

xiaoge2016 ⋅ 43分钟前 ⋅ 0

数据结构与算法之双向链表

一、双向链表 1.双向链表的结点结构 typedef struct DualNode{ ElemType data; struct DualNode *prior; // 前驱结点 struct DualNode *next; // 后继结点}DualNode, *DuL...

aibinxiao ⋅ 今天 ⋅ 0

五大最核心的大数据技术

大数据技术有5个核心部分,数据采集、数据存储、数据清洗、数据挖掘、数据可视化。关于这5个部分,有哪些核心技术?这些技术有哪些潜在价值?看完今天的文章就知道了。 大数据学习群:7165810...

董黎明 ⋅ 今天 ⋅ 0

PhpStorm 头部注释、类注释和函数注释的设置

首先,PhpStorm中文件、类、函数等注释的设置在:setting-》Editor-》FIle and Code Template-》Includes下设置即可,其中方法的默认是这样的: /**${PARAM_DOC}#if (${TYPE_HINT} != "v...

nsns ⋅ 今天 ⋅ 0

spring.net AOP

http://www.springframework.net/doc-latest/reference/html/aop-quickstart.html https://www.cnblogs.com/wujy/archive/2013/04/06/3003120.html...

whoisliang ⋅ 今天 ⋅ 0

【HAVENT原创】创建 Dockerfile 生成新的镜像,并发布到 DockerHub

注意:Win7 与 Win10 的版本存在差异,Win7 版本使用 Docker Quickstart Terminal 进入控制台,Win10下面直接用管理员权限打开控制台或者 PowerShell 即可;另外 Win7 下面只能访问 C盘,/ap...

HAVENT ⋅ 今天 ⋅ 0

pom.xml出现web.xml is missing ...解决方案

提示信息应该能看懂。也就是缺少了web.xml文件,<failOnMissingWebXml>被设置成true了。 搜索了一下,Stack Overflow上的答案解决了问题,分享一下。 目前被顶次数最多的回答原文如下: This...

源哥L ⋅ 今天 ⋅ 0

js时间戳与日期格式之间相互转换

1. 将时间戳转换成日期格式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 // 简单的一句代码 var date = new Date(时间戳); //获取一个时间对象 /** 1. 下面是获取时间日期的方法,需要什么样的格式自己...

Jack088 ⋅ 今天 ⋅ 0

web添加log4j

添加xml配置log4j.properties # Global logging configuration---root日志设置#log4j.rootLogger=info,dailyRollingFile,stdoutlog4j.rootLogger=debug,stdout,dailyRollingFile---......

黄柳淞 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部