問題是這樣的:
表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”;