mysql中Load Data記錄換行問題的解決方案

來源:互聯網
上載者:User

問題是這樣的:

表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”;
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.