天天看點

mysql load data 卡死_mysql中Load Data記錄換行問題的解決方法

問題是這樣的:

表persons有兩個字段: id和name

文本文檔persons.txt中内容(其中每行字段之間用tab分割):

1    Bush

2    Carter

3    Bush

在mysql指令行下使用 load data local infile “persons.txt” into table persons 導入資料到persons表中。

導入後檢視persons表的資料,與persons.txt的内容一緻。但是使用語句

select distinct name from persons

查詢,結果中Bush出現了兩次(正常結果應該是Bush隻出現一次)。

原因分析:經過分析,發現原因是windows下換行符為"\r\n",而mysql在load data時預設使用"\n"來切割每行記錄,導緻插入到表中前兩條記錄的name字段末尾多插入了不可見字元"\r";也就是說使用distinct關鍵字查詢出來的兩個Bush中,第一個詞尾有回車符"\r”,而第二個詞尾沒有。

說明:

1. mysql預設使用tab來分割每行的字段。

2. 因為linux下換行符為"\n",是以在linux下不會出現上述問題。

修改方法:隻要在導入資料時指定以"\r\n"來換行就可以了。

修改後的導入資料語句為:

load data local infile “persons.txt” into table persons

lines terminated by “\r\n”;