当前位置: 首页 > news >正文

easyexcel读文件入批量入es

1. 封装实体类,并对应excel表中的列

@Data
public class User {private String md5;private String id; @ExcelProperty(value = "age")private String age;@ExcelProperty(value = "username")private String name;}

2. 批量入库

private void insertBatchToES(List<User> dataList, String indexName) {try {BulkProcessor bulkProcessor = BulkProcessor.builder((request, bulkListener) -> elasticsearchClient.bulkAsync(request, RequestOptions.DEFAULT, bulkListener),new BulkProcessor.Listener() {@Overridepublic void beforeBulk(long executionId, org.elasticsearch.action.bulk.BulkRequest request) {// 准备执行前的操作}@Overridepublic void afterBulk(long executionId, org.elasticsearch.action.bulk.BulkRequest request, org.elasticsearch.action.bulk.BulkResponse response) {if (response != null) {int insertedCount = request.numberOfActions(); // 获取请求中操作的数量,即插入的条数log.info("批量插入 " + insertedCount + " 条数据成功");}}@Overridepublic void afterBulk(long executionId, org.elasticsearch.action.bulk.BulkRequest request, Throwable failure) {log.info("批量插入 error");}})// 设置每1000个请求执行一次批处理.setBulkActions(500).build();for(User user : dataList) {String jsonString = convertToJson(user);IndexRequest indexRequest = new IndexRequest(indexName).id(user.getId()).source(jsonString, XContentType.JSON);bulkProcessor.add(indexRequest);}bulkProcessor.awaitClose(10, TimeUnit.MINUTES);bulkProcessor.close();} catch (InterruptedException | JsonProcessingException e) {e.printStackTrace();}} 

将对象转json工具类:

 public String convertToJson(user) throws JsonProcessingException {String objStr = JSON.toJSONString(user, SerializerFeature.WriteNullListAsEmpty, SerializerFeature.WriteNullNumberAsZero,SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.NotWriteDefaultValue);return objStr;}

3. 读指定文件excel , 封装List

public void importExcelToES(String excelFilePath, String indexName) {try {EasyExcel.read(excelFilePath, User.class, new AnalysisEventListener<User>() {private List<User> dataList = new ArrayList<>();@Overridepublic void invoke(UserFansExcel data, AnalysisContext analysisContext) {long id = generator.nextId();data.setId(String.valueOf(id));if (dataList.size() >= 500) {insertBatchToES(filteredList, indexName);dataList.clear();}}@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {if (!dataList.isEmpty()) {insertBatchToES(dataList, indexName);}}}).sheet().doRead();} catch (Exception e) {e.printStackTrace();}

3.1 读执行目录下的所有excel文件,这些文件的格式是一样的

public void readExcelFilesFromDirectory(String directoryPath) throws IOException {List<User> dataList = new ArrayList<>();File dir = new File(directoryPath);File[] files = dir.listFiles((d, name) -> name.endsWith(".xlsx"));if (files != null) {for (File file : files) {System.out.println(file.getName());try {String primaryUserId = file.getName().replace(".xlsx", "");try (FileInputStream fis = new FileInputStream(file)) {EasyExcel.read(fis, User.class, new AnalysisEventListener<User>() {@Overridepublic void invoke(User data, AnalysisContext context) {data.setName(primaryUserId);dataList.add(data);}@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {}}).sheet().doRead();}} catch (Exception e) {e.printStackTrace();}if(dataList.size() >0){//这里可以插入数据库dataList.clear();}}}}

相关文章:

easyexcel读文件入批量入es

1. 封装实体类&#xff0c;并对应excel表中的列 Data public class User {private String md5;private String id; ExcelProperty(value "age")private String age;ExcelProperty(value "username")private String name;} 2. 批量入库 private void in…...

JS+H5打字练习器

实现功能 1.导入.TXT文件到打字练习内容&#xff08;部分浏览器可能出于安全问题限制了这一步操作&#xff09; 2.输入文本到打字练习内&#xff08;弹出输入框&#xff0c;将要练习的内容输入至输入框&#xff09; 3. 开始练习&#xff0c;并根据正误在打字练习内容文本上修…...

windows系统关闭开机自检硬盘

效果&#xff1a; 注册表关闭开机硬盘自检&#xff0c;你可以按照以下步骤操作&#xff1a; 打开注册表编辑器&#xff1a; 按 Win R 键打开“运行”对话框。输入 regedit 并按回车&#xff0c;打开注册表编辑器。 定位到自检相关的键&#xff1a; 依次展开以下路径&#x…...

【多线程开发 5】实践使用Lock和Condition

Lock和Condition Lock 线程之间同步或者竞争都需要锁这类结构&#xff0c;一般我们都会用Object的wait和signal搭配synchronized关键字进行多线程开发&#xff0c;但是很多时候会造成死锁的现象&#xff0c;这是因为synchroniezd无法破坏死锁的产生条件&#xff0c;但是Lock接…...

2.4-结构化并发:协程的结构化异常管理

文章目录 协程结构化异常流程协程结构化异常流程和取消流程的区别子协程异常为什么要连带取消父协程&#xff1f; CoroutineExceptionHandler异常协程异常的最后一道拦截&#xff1a;CoroutineExceptionHandlerCoroutineExceptionHandler 为什么只能设置给最外层协程才有效&…...

Android 12.0 debug版本打开OEM解锁开关功能实现

通常为了方便push在debug版本会采用如下命令 adb root adb disable-verity 提示&#xff1a; Device is locked. Please unlock the device first. 查找日志可以发现system/core/set-verity-state/set-verity-state.cpp文件中is_avb_device_locked方法里 这个获取ro.boot…...

linux用户组练习

准备工作 [rootlocalhost ~]# watch -n 1 tail -n 5 /etc/group使用watch 动态监控 1.建立用户组 shengcan&#xff0c;其id 为2000 2.建立用户组 caiwu&#xff0c;其id 为 2001 3.足建立用户组 jishu&#xff0c;其id 为 2002 4.建立用户lee&#xff0c;指定其主组id为sh…...

[Docker][Docker Container]详细讲解

目录 1.什么是容器&#xff1f;2.容器命令1.docker creatre2.docker run3.docker ps4.docker logs5.docker attach6.docker exec7.docker start8.docker stop9.docker restart10.docker kill11.docker top12.docker stats13.docker container inspect14.docker port15.docker c…...

塑造美好心灵,激发创造活力|第三届瓷艺中华“陶溪川杯”儿童青少年陶瓷作品展开展

第三届瓷艺中华“陶溪川杯”儿童青少年陶瓷作品展 展览现场 由中央美术学院、景德镇陶瓷大学、景德镇陶文旅控股集团共同主办&#xff0c;由中国非物质文化遗产保护协会陶瓷分会、中国文化艺术发展促进会陶瓷专业委员会、中央美术学院陶瓷艺术研究院、中央美术学院少儿美术教…...

鸿蒙开发刷新单个item会闪一下处理

鸿蒙开发刷新单个item会闪一下 首先我用的是懒加载方式,改变某位数据后我调listener.onDataChange(index),发现item的改动是变了,但是item也闪了一下。 先分析为什么item会闪一下 其他是因为item上有图片,加载的网络图。你onDataChange(index)时,它会重新加载这一item,…...

您需要了解的有关 5G 的一切。

转载 https://www.qualcomm.com/5g/what-is-5g 在这里&#xff0c;您可以找到 5G 技术的解释——5G 的工作原理、5G 的重要性以及它如何改变世界连接和沟通的方式。在 Qualcomm&#xff0c;我们发明了使 5G 成为可能的根本性突破。 问&#xff1a;什么是 5G&#xff1f; 答&…...

【redis】初识redis入门,基础部署以及介绍

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…...

数据库基础 -- 数据库约束

数据库基础 – 数据库约束 1.约束 1.1 概念 约束是用于强制数据库中数据 完整性 和 一致性 的规则。它们定义了对表中数据的限制&#xff0c;确保数据的有效性和正确性&#xff0c;实际上就是表中数据的限制条件。 1.2 分类 1.2.1 完整性约束 主键约束(Primary Key Const…...

U盘文件或目录损坏无法读取?专业恢复策略全解析

U盘困境&#xff1a;文件目录的隐形危机 在日常的数字生活中&#xff0c;U盘作为便捷的数据存储与传输工具&#xff0c;扮演着至关重要的角色。然而&#xff0c;当U盘中的文件或目录突然遭遇损坏&#xff0c;导致无法被正常读取时&#xff0c;这无疑给用户带来了极大的困扰。这…...

dpdk实现udp协议栈

使用DPDK实现UDP用户态协议栈&#xff0c;实现流程中包括&#xff1a; 三类线程 1、收发包线程 2、用户态协议栈线程 3、udp服务端线程 两类缓冲区&#xff1a; 1、协议栈收包缓冲区和协议栈发包缓冲区 2、udp收包缓冲区和udp发包缓冲区 协议栈缓冲区中存储的数据是str…...

Shell编程——基础语法(2)和 Shell流程控制

文章目录 基础语法&#xff08;2&#xff09;echo命令read命令printf命令test命令 Shell流程控制if-else语句for 循环while 语句until 循环case ... esac跳出循环 基础语法&#xff08;2&#xff09; echo命令 Shell 的 echo 指令与 PHP 的 echo 指令类似&#xff0c;都是用于…...

Python基础教程(二)字符串和函数

6.字符串 6.1 字符串的表示方式 6.1.1 普通字符串 普通字符串指用单引号()或双引号(”")括起来的字符串。例如:Hello或"Hello" >>> Hello Hello >>> "Hello" Hello >>> s\u0048\u0065\u006c\u006c\u006f >>> …...

智算新风向丨趋动科技获中国信通院泰尔实验室首张智算资源池化能力泰尔测评证书

近日&#xff0c;趋动科技“OrionX AI算力资源池化软件”经中国泰尔实验室依据《FG-Z14-0172-01智算资源池化平台测试方案》评估测试&#xff0c;获得智算资源池化能力泰尔测评证书&#xff0c;成为该领域首个完成此评价的产品。 图1.OrionX通过智算资源池化平台评测 随着AI大…...

计算机基础(Windows 10+Office 2016)教程 —— 第4章 计算机网络与Internet(上)

第4章 计算机网络与Internet 4.1 计算机网络概述4.1.1 计算机网络的定义4.1.2 计算机网络的发展4.1.3 计算机网络的功能4.1.4 计算机网络体系结构和TCP/IP 参考模型 4.2 计算机网络的组成和分类4.2.1 计算机网络的组成4.2.2 计算机网络的分类 4.3 网络传输介质和通信设备4.3.1 …...

MES系统在数字化转型中的核心作用与影响

数字化转型是企业利用数字技术改变其业务模式、运营方式、组织结构、产品服务等方面的过程&#xff0c;旨在提高效率、降低成本、增强竞争力并实现可持续发展。数字化转型涉及多个层面&#xff0c;主要包括以下几个方面&#xff1a; 数字化转型转什么 转战略&#xff1a;由构…...

装修施工注意事项

1 地漏保护 咋墙拆改时&#xff0c;一定要用保护盖把所有的地漏下水管道都拧紧 2 卫生间防水做完&#xff0c;必须要先用水泥砂浆做好保护层再贴&#xff0c;不然后续施工&#xff0c;不小心破坏防水层&#xff0c;以后漏水后悔都晚了。 3 入户门口处&#xff0c;一定要用…...

【Docker学习记录】

Docker学习记录 目录 1. Windows上使用wsl1.1 安装docker后遇到的一些疑惑1.2. wsl的一些相关命令1.3. 补一点&#xff0c;wsl的作用 2. docker一些常用的命令2.1 构建docker镜像2.2 运行镜像 3. Dockerfile的编写3.0 docker的一些概念3.0.1 容器的分层3.0.2 COPY-ON-WRITE 3.…...

互联网政务应用安全管理规定

互联网政务应用安全管理规定 &#xff08;2024年2月19日中央网络安全和信息化委员会办公室、中央机构编制委员会办公室、工业和信息化部、公安部制定 2024年5月15日发布&#xff09; 第一章 总则 第一条为保障互联网政务应用安全&#xff0c;根据《中华人民共和国网络安全法…...

HarmonyOS开发商城首页实现

目录 一:功能概述 二:代码实现 三:效果图 一:功能概述 这一节我们主要在鸿蒙OS系统中实现的一个底部导航功能,并在首页底部使用TabSwitch组件进行导航切换。同时,首页采用Search组件实现商品搜索框,Scroll和Swiper组件实现图片轮播功能,以展示推荐内容或图片。 1:…...

QtQuick Text-文本样式

属性 Text项目的style属性可以设置文本的样式。 支持的文本样式有&#xff1a; Text.Normal&#xff08;默认&#xff09;Text.OutlineText.RaisedText.Sunken 示例 import QtQuickRow{spacing: 10padding: 10Text {font.pointSize: 40text: "Normal"}Text {font…...

人工智能未来展望

深入剖析人工智能&#xff1a;现状、挑战与未来展望 在当今这个日新月异的科技时代&#xff0c;人工智能&#xff08;AI&#xff09;无疑是最为耀眼的明星之一。它以其独特的魅力&#xff0c;正引领着一场前所未有的技术革命&#xff0c;深刻地改变着人类社会的方方面面。本文…...

Pymol开源版安装 新版 3.0 / 3.1 Windows安装Pymol开源版

PyMOL 简介 PyMOL 是一个开源的分子可视化系统&#xff0c;被广泛应用于结构生物学中。它允许用户可视化分子结构&#xff0c;并创建高质量的蛋白质、核酸和其他大分子的3D图像。多年来&#xff0c;PyMOL不断发展&#xff0c;新版本引入了更多的功能和改进。 PyMOL 3.0 / 3.1…...

记录一次环境的安装

目录 新添加的代码 代码解释 为啥ubuntu用debian软件源 为啥修改sources.list.d S权限意思 php缺少和数据库连接的模块 使用root登陆数据库1698错误 字段解释 auth_socket解释 使用root登陆数据库方法 详细解释 首先在安装的时候&#xff0c;有一个dockerfile文件&a…...

浏览器用户文件夹详解 - WebData(八)

1.WebData简介 1.1 什么是WebData文件&#xff1f; WebData文件是Chromium浏览器中用于存储用户表单数据、自动填充信息和支付信息的一个重要文件。每当用户在浏览器中填写表单或保存支付信息时&#xff0c;这些数据都会被记录在WebData文件中。通过这些记录&#xff0c;浏览…...

ijkplayer 自定义协议播放加密内容 Android

想对播放的音视频进行加密&#xff0c;防止资源被盗用&#xff0c;该怎么办呢&#xff1f; 这篇文章从自定义协议的角度来提供一中实现思路。在 ijkplayer 的基础上&#xff0c;通过实现自定义协议对文件进行解密。边解边播&#xff0c;以此为基础&#xff0c;还可以实现在线资…...