我有一個包含超過100萬條記錄的csv文件。我想對這些記錄做一些處理,並將所有記錄保存在數據庫中。如何使用Spring-Data持續保存數百萬條記錄JPA
我嘗試了幾個選項。
保存在一個GO
jpaepository.save(實體)的所有實體;
這種方法需要永遠,永遠不會競爭。適用於較小的記錄數。
保存所有實體逐個
entities.forEach(jpaRepository ::保存);
這種方法完成,但花費了很多時間和內存使用在天空。
我有一個包含超過100萬條記錄的csv文件。我想對這些記錄做一些處理,並將所有記錄保存在數據庫中。如何使用Spring-Data持續保存數百萬條記錄JPA
我嘗試了幾個選項。
保存在一個GO
jpaepository.save(實體)的所有實體;
這種方法需要永遠,永遠不會競爭。適用於較小的記錄數。
保存所有實體逐個
entities.forEach(jpaRepository ::保存);
這種方法完成,但花費了很多時間和內存使用在天空。
這裏是我的建議,只是根據您的問題 -
FileReaderService
StorageService
。將此注入FileReaderService
@Transactional
放在save_N_records
方法的註釋上。StorageService.save_N_records
從FileReaderService
。每當您打電話時,請確保您編寫日誌以監控進度。
什麼是底層數據庫?你確定數據庫不是瓶頸嗎? –
使用類似Pentaho數據集成的ETL工具。說真的,你會爲自己節省很多頭痛。 – fhossfel
請勿使用JPA。改用'LOAD DATA INFILE'。 https://stackoverflow.com/questions/14127529/mysql-import-data-from-csv-using-load-data-infile。這將使執行時間縮短到幾秒(如果偶數秒) – baao