我正在尝试使用以下查询将CSV文件导入MySQL表:
LOAD DATA INFILE 'C:\\machines.csv'
INTO TABLE `machines`
CHARACTER SET latin1
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 0 LINES;
但是它会出现以下错误
1406-第10334行的'technicalInfo'栏数据太长了
似乎问题是该行在technicalInfo列中包含⌀字符。
是否可以在查询中删除/替换此字符?
(NB显然另一个解决方案是将其从csv文件本身中删除。问题是我很可能每天多次导入此文件的不同版本,所以我宁愿将其构建到查询中。)
答案 0 :(得分:1)
问题是{1'字符在latin1
字符集中不可用,这就是您收到错误的原因。你能否将字符集更改为utf8
并查看是否仍然遇到问题?
[1] MYSQL错误1406详情:http://bugs.mysql.com/bug.php?id=18908
答案 1 :(得分:0)
您可以更改或删除该符号,例如 -
LOAD DATA INFILE 'C:\\machines.csv'
INTO TABLE `machines`
CHARACTER SET latin1
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 0 LINES
(column1, column2, @var1) -- specify column names here
SET column3 = REPLACE(@var1, '⌀', ''); -- replace it with '!'