讀大文件到mysql
來源:程序員人生 發(fā)布時間:2015-06-12 08:01:01 閱讀次數(shù):4216次
起初使用java讀文件處理格式后存入數(shù)據(jù)庫,運行后發(fā)現(xiàn),效力太低太低,4G文本,4000多萬行,估計需要30天左右才能完成處理。
數(shù)據(jù)格式:
每行-> XXXX ||| XXXXXXX ||| XXXXXXXXXXXXXXXXX
數(shù)據(jù)是嚴(yán)格結(jié)構(gòu)化的,因此查詢到1種直接從文件導(dǎo)入mysql的方法:
Load Data infile
參考文章:http://hunan.iteye.com/blog/752606
使用的指令以下:
load data infile '/home/lenovo/文檔/NLPCC2015/auxiliary-data/NLPCC⑵015.Auxiliary.KB.Chinese'
ignore into table detail_all character set utf8 fields terminated by ' ||| '
lines terminated by '
' (`subject`,`predicate`,`value`);
根據(jù)[ ||| ]分割1行數(shù)據(jù),分割成3段,然后每行根據(jù)
辨認(rèn),3段數(shù)據(jù)分別存入3個字段。
成功導(dǎo)入47943428 rows !
導(dǎo)入后發(fā)現(xiàn)每行結(jié)尾還有
存在,下面消除
符號
update detail_all set value = trim(TRAILING '
' FROM `value`);
用trim消除開頭和最后的符號。參考:http://nameyjj.blog.51cto.com/788669/621932
運行時報錯:
Error Code: 2013. Lost connection to MySQL server during query 600.746 sec
查到解決方案:http://www.quora.com/How-can-I-solve-the-Error-Code⑵013-Lost-connection-to-MySQL-server-during-query⑹00⑴35-sec-error-message
即把超時的時間調(diào)大便可。
隨后運行報錯:
Error Code: 1205. Lock wait timeout exceeded; try restarting transaction
查到解決方案:http://blog.csdn.net/mchdba/article/details/38313881
我這里是回滾進(jìn)程沒有結(jié)束,等待其結(jié)束便可。
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進(jìn)行捐贈