萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql load data infile 命令的數據導入

mysql load data infile 命令的數據導入

文章介紹了mysql load data infile 命令的數據導入,該方式比直接的insert的效率要高,按照官方的說法是要比insert語句快上20倍,有需要的朋友可參考。

使用方式如下:

 代碼如下 復制代碼

mysql>load data local infile "D:/ab.txt" into table mytbl(name,age); 

如何load數據裡面帶反斜槓(backslash)”” 的數據


由於如果你沒有指定FIELDS子句,則默認值為假設您寫下如下語句時的值:

 代碼如下 復制代碼 FIELDS TERMINATED BY ‘t’ ENCLOSED BY ” ESCAPED BY ‘\’

所以,如果你的數據裡面有反斜槓(backslash)””的時候,數據會出現被截斷的問題。出現這種問題,只要寫上如下的fields子句即可

 代碼如下 復制代碼 FIELDS TERMINATED BY ‘t’ ENCLOSED BY ” ESCAPED BY ”


使用上述的命令就可以將D:/ab.txt文件的內容導入到表mytbl中,其中name和age是表mytbl的字段,對應ab.txt文件中每行的數據。如果編譯安裝mysql時沒有指定–enable-local-infile,那麼在使用上述命令時會報如下錯誤:

ERROR 1148 (42000): The used command is not allowed with this MySQL version    

 解決方式有兩種,一是重新編譯安裝加上上面的參數,而是直接用命令行執行,如下:

 代碼如下 復制代碼

mysql -uroot -proot  mydb_name --local-infile=1 -e 'load data local infile "D:/ab.txt" into table mytbl(name,age)'    


測試了一把,導入300萬條數據時,使用load data命令的時間花銷大概在3分鐘左右


如何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。


建的表用的是MYISAM,調整了幾個session的參數值

 代碼如下 復制代碼

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

copyright © 萬盛學電腦網 all rights reserved