讀取10G的sql文件并寫入es
2023-09-10 12:05 作者:取悅疾風(fēng) | 我要投稿
業(yè)務(wù)場(chǎng)景
服務(wù)器內(nèi)現(xiàn)有1500萬(wàn)條數(shù)據(jù),需要將數(shù)據(jù)同步到es內(nèi)
思路1
查詢并批量插入es即可
優(yōu)點(diǎn)
簡(jiǎn)單粗暴,容易理解
缺點(diǎn)
數(shù)據(jù)量太大,越到后面導(dǎo)致查詢速度越慢,平均每個(gè)sql需要執(zhí)行好幾秒
思路2
大批量查詢并保存為csv文件,然后通過(guò)easyexcel讀取csv,然后批量插入
https://easyexcel.opensource.alibaba.com/
優(yōu)點(diǎn)
運(yùn)行起來(lái)的時(shí)候快速,高效
缺點(diǎn)
編碼稍微復(fù)雜,需要先查詢大量數(shù)據(jù),保存,然后再讀取,這樣會(huì)生成多個(gè)很大的csv,占用大量的磁盤空間,不適用于服務(wù)器內(nèi)
操作案例
實(shí)體類
先分割數(shù)據(jù)
從數(shù)據(jù)庫(kù)內(nèi)查詢數(shù)據(jù)并寫入csv
這里我設(shè)置了每次查詢100萬(wàn)條數(shù)據(jù),保存成為1個(gè)csv
controller
service
impl
分割完成后需要寫入
controller
實(shí)體類的listener
然后調(diào)用insertByCsv1000
接口就可以了
下面是調(diào)用成功的結(jié)果,es被狂暴涌入300w次

可以再次封裝,調(diào)用接口的時(shí)候接收一個(gè)路徑字符串,然后通過(guò)路徑讀取文件,插入即可
標(biāo)簽:
讀取10G的sql文件并寫入es的評(píng)論 (共 條)
