2012-02-19 65 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';