MySQL导入CSV文件报错Data truncated、行被截断且数据丢失问题求助
问题根因
- 行分隔符配置不匹配:你当前命令指定行分隔符为
\n,若CSV是Windows环境导出的,默认行分隔符为\r\n,多余的\r会被拼到最后一个字段updatedAt的末尾,导致datetime格式校验失败触发Data truncated告警,同时多余的不可见字符会被识别为额外字段,触发列数不匹配的告警。 - 字符集配置不符:导入命令指定字符集为
latin1,如果CSV文件实际为UTF-8编码,特殊字符解析异常会导致字段分隔错位,也会触发上述两类错误。
修复方案
使用修正后的导入命令执行即可:
LOAD DATA LOCAL INFILE '/root/sistema/dados.csv' INTO TABLE pergunta CHARACTER SET utf8mb4 FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n' (name,datavalidade,createdAt,updatedAt);
补充说明
如果执行后仍有报错,可在Linux环境执行cat -A /root/sistema/dados.csv查看实际换行符:
- 行尾显示
^M$代表换行符为\r\n,用上述命令即可 - 行尾仅显示
$代表换行符为\n,将命令中LINES TERMINATED BY的参数改为'\n'即可 - 如果CSV首行是表头,在
LINES TERMINATED BY配置后新增IGNORE 1 LINES跳过表头即可
内容的提问来源于stack exchange,提问作者Erick Scur
相关产品推荐
相关产品推荐

