程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql中Load Data記錄換行問題的解決方法

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

編輯:MySQL綜合教程

問題是這樣的:

表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”;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved