【问题标题】:SELECT statement prints data strangelySELECT 语句奇怪地打印数据
【发布时间】:2012-02-19 16:53:19
【问题描述】:

我有一个名为 TAG 的 MySQL 表,它从 CSV 文件中导入值。

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';

【问题讨论】:

  • 你能给我们,比如说,CSV 文件的 10 行吗?
  • 另外,问题可能与文件编码有关吗?
  • 这里是CSV前20行的链接:yourfilelink.com/get.php?fid=764674谢谢你的帮助
  • ASCII text, with CRLF line terminators。这只是在黑暗中的一个远射:你能告诉我们如果你说行以'\r\n'结尾会发生什么吗?我真的没有看到任何其他可能出错的地方,即使这个\r\n 问题也不太可能是罪魁祸首。
  • 我试过这个,它没有任何改变。感谢您的帮助。

标签: mysql sql select csv


【解决方案1】:
  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';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多