MySQL CSV-Import无法匹配列的值

时间:2015-05-25 20:36:26

标签: mysql sql csv import

我得到以下情况: 我通过“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的UTF8中格式化了.csv文件。

编辑:
当我更新数据集并只删除一个字符时,select-statement工作正常。

来自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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

也许它适用于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)

如果可以再次加载数据,请添加'terminate by':

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