MySQL 快速導入大量數據 資料收集


一、LOAD DATA INFILE http://dev.mysql.com/doc/refman/5.5/en/load-data.html 

二、

當數據量較大時,如上百萬甚至上千萬記錄時,向MySQL數據庫中導入數據通常是一個比較費時的過程。通常可以采取以下方法來加速這一過程:

一、對於Myisam類型的表,可以通過以下方式快速的導入大量的數據。 ALTER TABLE tblname DISABLE KEYS; loading the data ALTER TABLE tblname ENABLE KEYS; 這兩個命令用來打開或者關閉Myisam表非唯一索引的更新。在導入大量的數據到一個非空的Myisam表時,通過設置這兩個命令,可以提高導入的效率。對於導入大量數據到一個空的Myisam表,默認就是先導入數據然后才創建索引的,所以不用進行設置。

二、對於Innodb類型的表,有以下幾種方式可以提高導入的效率: ①因為Innodb類型的表是按照主鍵的順序保存的,所以將導入的數據按照主鍵的順序排列,可以有效的提高導入數據的效率。如果Innodb表沒有主鍵,那么系統會默認創建一個內部列作為主鍵,所以如果可以給表創建一個主鍵,將可以利用這個優勢提高導入數據的效率。

②在導入數據前執行SET UNIQUE_CHECKS=0,關閉唯一性校驗,在導入結束后執行SET UNIQUE_CHECKS=1,恢復唯一性校驗,可以提高導入的效率。

③如果應用使用自動提交的方式,建議在導入前執行SET AUTOCOMMIT=0,關閉自動提交,導入結束后再執行SET AUTOCOMMIT=1,打開自動提交,也可以提高導入的效率。

 

三、

如何提高mysql load data infile的速度 測試數據2.5G,共有數據9427567條。用的mysql的large服務器的配置。 load一次需要大概10分鍾左右。 建的表用的是MYISAM,調整了幾個session的參數值

SET SESSION BULK_INSERT_BUFFER_SIZE = 256217728 ; SET SESSION MYISAM_SORT_BUFFER_SIZE = 256217728 ;

運行結果如下

Query OK, 9427567 rows affected, 1558 warnings (3 min 55.21 sec) Records: 9427567 Deleted: 0 Skipped: 0 Warnings: 0 google到的還可以

set g lobal KEY_BUFFER_SIZE = 256217728 ; alter table tablename disable keys ;

如何load數據里面帶反斜杠(backslash)”\” 的數據 由於如果你沒有指定FIELDS子句,則默認值為假設您寫下如下語句時的值: FIELDS TERMINATED BY ‘\t’ ENCLOSED BY ” ESCAPED BY ‘\\’ 所以,如果你的數據里面有反斜杠(backslash)”\”的時候,數據會出現被截斷的問題。出現這種問題,只要寫上如下的fields子句即可 FIELDS TERMINATED BY ‘\t’ ENCLOSED BY ” ESCAPED BY ”

如何load不同編碼的數據 原來用的4.X的mysql,我是select INTO OUTFILE ,只后用iconv,或者其他軟件來做。可以參考這里,但是由於這次數據大,用ultraedit等軟件打開都要半天。好在新版的mysql可以增加一個新的參數 CHARACTER SET gbk 我的文本數據是GBK的編碼,數據表是utf8的,用這種方法測試成功。 如何load的時候只insert特定的列 比如表里面有比元數據多的列。可以在load的時候指定要插入的字段名字。

示例的代碼如下:

LOAD DATA INFILE ' ~/data.txt '     INTO TABLE fb0505     CHARACTER SET   gbk     FIELDS TERMINATED BY ' \t ' ENCLOSED BY '' ESCAPED BY '' LINES TERMINATED BY ' \n ' STARTING BY ''   ( seller_id , fb_type , fb_date , item_url ) ;

其中表fb0505里面還有一列是id。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM