mysql load data infile 命令的資料匯入

來源:互聯網
上載者:User

使用方式如下:

 代碼如下 複製代碼

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;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.