【问题标题】:MySQL CSV-Import Can't match values of a columnMySQL CSV-Import 无法匹配列的值
【发布时间】:2015-05-25 20:36:26
【问题描述】:

我得到以下情况: 我通过“LOAD DATA LOCAL INFILE”将 .csv 导入 mysql。

一切正常,但有一栏有点坏了。

它充满了“类别名称”,例如“LFP-Graphic Art”和“Papiere, Blöcke, Formulare”。

如果我用一个简单的语句在表中查找一个条目,我得到的结果为零:

SELECT * FROM t_category
WHERE category = 'LFP-Graphic Art';

如果我让它显示表格中的所有内容,我可以看到确实有类别为“LFP-Graphic Art”的条目。
我也已经在寻找空格,但这似乎不是问题。

我猜是导入出了点问题?
我在没有 BOM 的情况下将 .csv 文件格式化为 UTF8。

编辑:
当我更新数据集并删除一个字符时,选择语句可以正常工作。

csv 中的示例行:

active;supplier;SUPPLIER_AID;categorie
1;kb;10101;FP-Graphic Art

还有 MySQL 表:

t_import

name, type, collation
active, tinyint(4), latin1_general_ci
supplier, char(255), latin1_general_ci
SUPPLIER_AID, char(255), latin1_general_ci
category, varchar(255), utf8_general_ci

【问题讨论】:

  • 你能用那个字符串显示一行csv吗?另外,您是否尝试过使用 LIKE '%LFP-Graphic Art%' 类别?
  • like 语句有效。但我需要确切的结果才能进一步使用它。 csv 行很长,有 130 列。
  • 我能看到一行csv吗?
  • 1;kb;10101;LFP-Graphic Art - 我确实剪掉了很多。我还尝试用 ' " ' 包围每个字符串
  • 那一列的表结构呢?

标签: mysql sql csv import


【解决方案1】:

尝试检查“行终止于”语句。 由于有问题的字段是最后一个字段,因此您可能错误地加载了回车字符。

【讨论】:

    【解决方案2】:

    也许它适用于 TRIM()。我认为有任何隐藏的角色。

    SELECT * FROM t_category WHERE TRIM(category) = TRIM('LFP-Graphic Art');
    

    是否有行尾问题可以更新字段。

    -- with a \n line end (Unix)
    UPDATE t_category SET category = TRIM(BOTH '\n' from category)
    -- with a \n\r line end (Windows)
    UPDATE t_category SET category = TRIM(BOTH '\n\r' from category)
    

    当可以再次加载数据时,添加“终止者”:

    LOAD DATA .... LINES TERMINATED BY '\n'
    -- or
    LOAD DATA .... LINES TERMINATED BY '\n\r'
    

    【讨论】:

    • 单词之间的字符串中有一个或多个空格?
    • 一个空格。我还尝试更新数据集并删除最后一个字符。之后选择有效 - 我在问题中编辑它
    猜你喜欢
    • 1970-01-01
    • 2021-12-30
    • 2020-02-13
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多