2012-02-19 133 views
1

我有一個名爲TAG的MySQL表,它從CSV文件導入值。SELECT語句打印奇怪的數據

mysql> describe TAG; 
+------------+-------------+------+-----+---------+-------+ 
| Field  | Type  | Null | Key | Default | Extra | 
+------------+-------------+------+-----+---------+-------+ 
| TA_BO_ISBN | varchar(14) | YES |  | NULL |  | 
| TA_Tag  | varchar(30) | YES |  | NULL |  | 
+------------+-------------+------+-----+---------+-------+ 
2 rows in set (0.00 sec) 

當我嘗試查看整個表似乎是一個問題與ISBN號

mysql> select * from TAG; 
+----------------+----------------+ 
| TA_BO_ISBN  | TA_Tag   | 
+----------------+----------------+ 
     |794557 | paris 
     |1794558 | france 
     |1794559 | europe 
      |94560 | city 
     |1794561 | lonely 

當我選擇的ISBN號的結果看起來不錯。

mysql> select TA_BO_ISBN from TAG; 
+----------------+ 
| TA_BO_ISBN  | 
+----------------+ 
| 978-1741794557 | 
| 978-1741794558 | 
| 978-1741794559 | 

奇怪的是,當我選擇標籤的結果看起來很奇怪再次

mysql> select TA_TAG from TAG; 
+----------------+ 
| TA_TAG   | 
+----------------+ 
     | 
     | 
     | 
      | 
     | 
     | 
      | 
     | 
     | 
     | 
     | 
    |untryside 
     |r 
     | 
     |ges 
     | 

這不僅僅是審美的,我有一種感覺,這是建立在我的SQL查詢的問題。導入腳本以防萬一誰好奇。

LOAD DATA LOCAL INFILE 'sql/tags.csv'INTO TABLE TAG FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'; 
+0

你能不能給我們的,比如說,10號線的CSV文件的? – Irfy 2012-02-19 16:55:35

+1

另外,問題可能與文件編碼有關嗎? – Irfy 2012-02-19 16:56:20

+0

以下是CSV前20行的鏈接:http://www.yourfilelink.com/get.php?fid = 764674感謝您的幫助 – user1165379 2012-02-19 19:01:19

回答

0
  1. 你的文件包含CRLF(\ r \ n)的作爲行尾字符。
  2. 在您的查詢中,您告訴MySQL使用LF(\ n)作爲行尾字符來導入該行。
  3. 結論:CR(\ r)字符被導入表格字段而不是被忽略。這會產生您在選擇時看到的視覺怪癖。

爲了解決這個問題,只是改變你的查詢:

LOAD DATA LOCAL INFILE 'sql/tags.csv'INTO TABLE TAG FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';