txt大文件如何高效率解析入库

txt文件,基本上每一行都看做一条记录,但是要进行解析。

 

 

每次读取N行,开启多线程,文件拆分。。。。。。。

 

 

 

目前是读一行解析一行入库一条,不知道大家还有更好的解决方案吗,欢迎讨论。

6个回答

采用多个线程使用RandomAccessFile读取文,将读取文件放在一个队列中,超过一定数据,批量发送到数据库。

解析和入库耗时不一样吧

可以流水做

流什么水啊

多线程产什么的目的从来都不是因为要解决计算速度问题,多线程只能降低一个问题的解决速度。

就一行一行读就行了,关键是要用BufferedReader进行缓冲,再者就是你的程序算法是怎么实现的了。

其实说流水不太贴切

用一组线程(进程)进行解析
另一组线程(进程)进行分析入库
中间利用队列协调,比如全局变量,或者分布式的gearmend

不过只是之上谈兵
主要是看哪里性能可以提升
如果是IO慢可以考虑先放内存
入库慢可以按我的方法试试

分布式处理 map reduce

入库时写入数据库吗?那性能瓶颈在这里。
你有没有测试把写入数据库注释掉,只读文件和解析?我想几十M的文件大概几秒钟就可以完成吧。

如果是写入数据库的话,简单的方法就是批量更新。写入N条数据提交事务一次,这个N的具体数值要经过实验得出。速度一定会比单条提交快很多。

再想提高性能的话,就要做多线程并发提交了,具体的并发数量同样需要实验得出。在并发提交的同时同样需要批量提交,批量提交提高数据库访问性能最有效的方法。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问