读大文件到mysql

起初使用java读文件处理格式后存入数据库,运行后发现,效率太低太低,4G文本,4000多万行,估计需要30天左右才能完成处理。

数据格式:

每行->  XXXX ||| XXXXXXX ||| XXXXXXXXXXXXXXXXX

数据是严格结构化的,因此查询到一种直接从文件导入mysql的方法:

Load Data infile

参考文章:http://hunan.iteye.com/blog/752606

使用的指令如下:

load data infile '/home/lenovo/文档/NLPCC2015/auxiliary-data/NLPCC-2015.Auxiliary.KB.Chinese' 
ignore into table detail_all character set utf8 fields terminated by ' ||| '
lines terminated by '\n' (`subject`,`predicate`,`value`); 

根据[ ||| ]分割一行数据,分割成三段,然后每行根据\n识别,三段数据分别存入三个字段。

成功导入47943428 rows !

导入后发现每行结尾还有\r存在,下面消除\r符号

update detail_all set value = trim(TRAILING '\r' 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-2013-Lost-connection-to-MySQL-server-during-query-600-135-sec-error-message

即把超时的时间调大即可。

随后运行报错:

Error Code: 1205. Lock wait timeout exceeded; try restarting transaction

查到解决方案:http://blog.youkuaiyun.com/mchdba/article/details/38313881

我这里是回滚进程没有结束,等待其结束即可。


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值