我正在尝试寻找最有效的方法来解析大文件,并将结果保存在数据库中。
有问题的文件是一个 12_500_000 行的文本文件,其中包含来自服务器的日志。
日志看起来像这样
[notice] 2021-03-10T16:19:26.102551Z couchdb@127.0.0.1 <0.8999.68> 351ac014dd 87.92.211.148:5984 125.129.113.37 user1 GET /userdb 200 ok 8
我正在解析数据库名称 (userdb) 和动词 (GET)。
while ((line = reader.readLine()) != null) {
String[] data = line.split("\\s+");
service.save(new Request(data[8], data[9].substring(1)));
}
与将其保存到数据库所需的时间(78.6ms)相比,解析时间(1ms 以下)微不足道。
我想异步执行此操作,但据我了解,您无法将记录异步保存到数据库中。
知道走哪条路更快吗?