当前位置: 首页 > 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();}}}}

http://www.lryc.cn/news/413190.html

相关文章:

  • JS+H5打字练习器
  • windows系统关闭开机自检硬盘
  • 【多线程开发 5】实践使用Lock和Condition
  • 2.4-结构化并发:协程的结构化异常管理
  • Android 12.0 debug版本打开OEM解锁开关功能实现
  • linux用户组练习
  • [Docker][Docker Container]详细讲解
  • 塑造美好心灵,激发创造活力|第三届瓷艺中华“陶溪川杯”儿童青少年陶瓷作品展开展
  • 鸿蒙开发刷新单个item会闪一下处理
  • 您需要了解的有关 5G 的一切。
  • 【redis】初识redis入门,基础部署以及介绍
  • 数据库基础 -- 数据库约束
  • U盘文件或目录损坏无法读取?专业恢复策略全解析
  • dpdk实现udp协议栈
  • Shell编程——基础语法(2)和 Shell流程控制
  • Python基础教程(二)字符串和函数
  • 智算新风向丨趋动科技获中国信通院泰尔实验室首张智算资源池化能力泰尔测评证书
  • 计算机基础(Windows 10+Office 2016)教程 —— 第4章 计算机网络与Internet(上)
  • MES系统在数字化转型中的核心作用与影响
  • 装修施工注意事项
  • 【Docker学习记录】
  • 互联网政务应用安全管理规定
  • HarmonyOS开发商城首页实现
  • QtQuick Text-文本样式
  • 人工智能未来展望
  • Pymol开源版安装 新版 3.0 / 3.1 Windows安装Pymol开源版
  • 记录一次环境的安装
  • 浏览器用户文件夹详解 - WebData(八)
  • ijkplayer 自定义协议播放加密内容 Android
  • 【kill】Centos/Linux 如何杀死那该死的进程?