欢迎光临散文网 会员登陆 & 注册

读取10G的sql文件并写入es

2023-09-10 12:05 作者:取悦疾风  | 我要投稿

业务场景

服务器内现有1500万条数据,需要将数据同步到es内

思路1

查询并批量插入es即可

优点

简单粗暴,容易理解

缺点

数据量太大,越到后面导致查询速度越慢,平均每个sql需要执行好几秒

思路2

大批量查询并保存为csv文件,然后通过easyexcel读取csv,然后批量插入

https://easyexcel.opensource.alibaba.com/

优点

运行起来的时候快速,高效

缺点

编码稍微复杂,需要先查询大量数据,保存,然后再读取,这样会生成多个很大的csv,占用大量的磁盘空间,不适用于服务器内


操作案例

实体类

先分割数据

从数据库内查询数据并写入csv

这里我设置了每次查询100万条数据,保存成为1个csv

controller

service

impl

分割完成后需要写入

controller

实体类的listener

然后调用insertByCsv1000接口就可以了

下面是调用成功的结果,es被狂暴涌入300w次

可以再次封装,调用接口的时候接收一个路径字符串,然后通过路径读取文件,插入即可


读取10G的sql文件并写入es的评论 (共 条)

分享到微博请遵守国家法律