程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 讀大文件到mysql

讀大文件到mysql

編輯:MySQL綜合教程

讀大文件到mysql


起初使用java讀文件處理格式後存入數據庫,運行後發現,效率太低太低,4G文本,4000多萬行,估計需要30天左右才能完成處理。

數據格式:

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

數據是嚴格結構化的,因此查詢到一種直接從文件導入mysql的方法:

Load Data infile

使用的指令如下:

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消除開頭和最後的符號。

運行時報錯:

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

我這裡是回滾進程沒有結束,等待其結束即可。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved