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

MySQL导入CSV报错1262:行数据截断问题求助

解决MySQL LOAD DATA导入CSV时的1262错误

问题分析

报错Error Code: 1262. Row 1 was truncated; it contained more data than there were input columns的核心原因是字段闭合符设置错误,导致MySQL无法正确识别CSV字段的边界,错误地将单个字段拆分成多个列,从而触发行截断提示。

你的CSV字段使用双引号包裹,但在LOAD DATA语句中你写的是ENCLOSED BY '"'——这是HTML实体转义,MySQL无法识别这个语法,因此无法正确解析字段的起始和结束位置。另外,你手动用REPLACE去除双引号的操作是冗余的,当ENCLOSED BY设置正确时,MySQL会自动剥离字段周围的双引号。

修正后的导入语句

LOAD DATA INFILE 'krupka_lezaky.csv'
INTO TABLE table_lezaky_krupka5 
    FIELDS TERMINATED BY ',' 
    ENCLOSED BY '"'  -- 修正为MySQL能识别的双引号写法
    LINES TERMINATED BY '\r\n'  -- 若CSV是Windows生成的用这个,Linux/macOS用'\n'
    IGNORE 1 LINES
    (@var1, @var2, NAZEV, DOPLNEK, @var5, @var6, @var7, @var8, @var9, @var10, @var11, @var12)
SET 
    ID_ZBOZI = @var1,  -- 无需手动去双引号,MySQL已自动处理
    ID_CISELNIK = @var2,
    MNOZSTVI = REPLACE(@var5, ',', '.'),  -- 仅替换小数分隔符
    NCENA_BD = REPLACE(@var6, ',', '.'),
    NCENA_SD = REPLACE(@var7, ',', '.'),
    PCENA_SD = REPLACE(@var8, ',', '.'),
    PCENA_RP = REPLACE(@var9, ',', '.'),
    DAT_PRIJEM = CASE WHEN @var10 != '' THEN STR_TO_DATE(@var10, '%d.%m.%Y %H:%i:%s') ELSE NULL END,
    DAT_VYDEJ = CASE WHEN @var11 != '' THEN STR_TO_DATE(@var11, '%d.%m.%Y %H:%i:%s') ELSE NULL END,
    KOD_VZP = @var12,
    ID_PROVOZOVNA = 4;

额外说明

  • 换行符适配:如果你的CSV是在Windows系统生成的,换行符通常是\r\n,Linux/macOS则是\n,根据实际情况调整LINES TERMINATED BY参数。
  • 空日期处理:添加CASE判断是为了避免空字符串传入STR_TO_DATE导致的警告(虽然不影响导入,但能让日志更干净)。
  • 字段类型匹配:ID_ZBOZI是int类型,当@var1被正确解析为数字字符串时,MySQL会自动转换为整数,无需额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:44:53