问题描述
过程如下所示,读取固定长度的文件,对记录进行一些数据质量检查,创建Java对象,然后使用JDBC将对象写入表中。问题是,它运行非常缓慢。我尝试过使用大插入,通过使用saveAll方法传入java对象的ArrayList,但是它并没有节省我希望的时间。最有效的方法是什么?
try (BufferedReader reader = new BufferedReader(new FileReader(inputFile))) {
String line = reader.readLine();
int count = 0;
while (line != null) {
if (line.startsWith("5")) {
if (dataQuality(line)) {
Subscription subscription = buildSubscriptionObject(line);
insertList.add(subscription);
count++;
if (count == 1000) {
oracleService.loadToTableSubscription(insertList);
count = 0;
insertList.clear();
}
} else {
logger.info("Data quality check FAILED for record: " + line);
oracleService.revertInserts("PSTV_PAY_SRVC_SBSRB_STG",procDt.toString());
System.exit(111);
}
}
line = reader.readLine();
}
logger.info("Leftover record count is " + insertList.size());
oracleService.loadToTableSubscription(insertList);
} catch (IOException e) {
e.printStackTrace();
}
我的oracleService对象是一个@Service,它使用我的repo实现来调用saveAll方法。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)