phpMyAdmin导入CSV文件到MySQL出现数据截断错误是什么原因?
报错核心原因
- 分隔符配置不匹配:你的CSV文件字段实际使用英文逗号
,分隔,但执行的LOAD DATA导入语句中配置的字段分隔符为分号;。MySQL会将整行数据识别为第一个id字段的输入值,远超出bigint类型的长度限制,因此触发Data truncated for column 'id'报错。 - 字段数量不匹配:
contacts表总计12个字段,但你提供的CSV每行只有10列数据,缺少created_at、updated_at两个字段的对应值,因此触发Row 1 does not contain data for all columns报错。 - 未配置列映射规则:导入语句没有指定CSV列对应的表字段,也没有对缺失的字段配置自动填充规则,MySQL会强制要求输入数据匹配全表字段数量。
修复方案
你可以按照以下步骤调整导入配置:
- 在phpMyAdmin的导入设置页,将CSV字段分隔符从分号
;改为英文逗号,。 - 修改LOAD DATA导入语句,补充列映射和缺失字段的填充规则,参考语句如下:
LOAD DATA INFILE 'C:\\xampp\\tmp\\phpF39A.tmp' INTO TABLE `contacts` FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n' (id, name, lastname, position, mobile_no, mobile_no2, descriptionMobile, descriptionMobile2, email, status) SET created_at = CURRENT_TIMESTAMP(), updated_at = CURRENT_TIMESTAMP();
- 若CSV中的
NULL被识别为字符串而非空值,可以在导入前将CSV内的NULL替换为空,或导入后执行批量更新修正。
内容的提问来源于stack exchange,提问作者matuco1998
相关产品推荐
相关产品推荐

