You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL Error Code 1265 导入CSV时FLOAT类型列数据截断问题咨询

MySQL导入CSV报Error 1265(FLOAT列数据截断)原因说明

核心原因

  • FLOAT属于二进制浮点类型,无法精准存储所有十进制小数。你CSV里的3.56、25.23这类十进制小数,转成二进制FLOAT存储时会出现不可避免的精度损耗,数值和原值有轻微差异。
  • MySQL 8.0默认开启严格SQL模式(STRICT_TRANS_TABLES),只要数据转换过程中出现任何精度丢失、长度截断的情况,都会直接抛出1265错误,而非普通警告。
  • DECIMAL是十进制定点类型,存储逻辑和CSV里的十进制小数完全匹配,转换过程没有精度损耗,符合严格模式的校验规则,因此可以正常导入。

可选解决方案(如果必须使用FLOAT类型)

  1. 临时关闭当前会话的严格模式再执行导入:
SET SESSION sql_mode = REPLACE(@@sql_mode, 'STRICT_TRANS_TABLES', '');
-- 再执行LOAD DATA INFILE语句即可
  1. 导入时对score列做显式转换,避免隐式转换触发校验:
LOAD DATA INFILE "C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/test_data.csv"
INTO TABLE dummy
COLUMNS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(entry_id, first_name, last_name, @temp_score)
SET score = CAST(@temp_score AS FLOAT);

原始操作代码参考

CREATE TABLE dummy(
    entry_id INT NOT NULL,
    first_name VARCHAR(15) NOT NULL,
    last_name VARCHAR(15) NOT NULL,
    score FLOAT NOT NULL,
    PRIMARY KEY (entry_id)
);

LOAD DATA INFILE "C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/test_data.csv"
INTO TABLE dummy
COLUMNS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

CSV样例参考

entry_idfirst_namelast_namescore
1JoshuaMbweka3.56
2MaryNjoroge25.23
3AdamKimanzi64.41
4EveFaluna56.13
5LesterChuma89.21

内容的提问来源于stack exchange,提问作者Babypowder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:57:00