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

MySQL导入CSV时Industry_Code字段报ERROR 1366 (HY000)错误求助

解决MySQL导入CSV时的ERROR 1366整数值错误

看起来你遇到的问题是MySQL没能正确解析CSV里的整数字段,反而把带引号的数值当成了非法字符串。咱们一步步来拆解问题和解决办法:

错误原因分析

从报错信息Incorrect integer value: ''"6029"''能看出来,MySQL接收到的Industry_Code值是带嵌套引号的(也就是CSV里的"6029"被错误识别成了包含双引号的字符串),而你的字段是bigint类型,自然无法把带引号的字符串转成整数。至于空值没报错,是因为CSV里的""会被MySQL默认处理成NULL(只要你的字段允许NULL),所以不会触发类型错误。

具体解决步骤

  • 正确配置LOAD DATA的CSV格式参数
    这是最关键的一步!你需要在导入命令里明确告诉MySQL,CSV的字段是用双引号包裹的,这样它才会自动去掉引号读取里面的数值。示例命令如下:

    LOAD DATA INFILE '/path/to/your/import_file.csv'
    INTO TABLE your_target_table
    FIELDS TERMINATED BY ','
    ENCLOSED BY '"'  -- 告诉MySQL字段用双引号包裹
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES;  -- 如果你的CSV有表头行,记得加上这行忽略表头
    
  • 处理字段内的双引号转义(如果需要)
    如果你的CSV里存在字段内容本身包含双引号的情况(比如某个公司名称是"ABC" Corp),CSV通常会用双引号转义双引号(写成"""ABC"" Corp"),这时候你需要在导入命令里加上转义规则:

    LOAD DATA INFILE '/path/to/your/import_file.csv'
    INTO TABLE your_target_table
    FIELDS TERMINATED BY ','
    ENCLOSED BY '"'
    ESCAPED BY '"'  -- 处理字段内部的双引号转义
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES;
    
  • 校验CSV数据的一致性
    你提供的第10行数据后面的字段是空的(""),这没问题,但要确保所有Industry_Code的非空值都是纯数字,没有额外的空格、制表符或者特殊字符。可以用文本编辑器的正则搜索"[0-9]+"来快速检查是否有异常格式的数值。

  • 临时关闭严格模式(仅用于排查)
    如果上面的方法都没解决,作为临时排查手段,你可以临时关闭MySQL的严格SQL模式,让它自动尝试转换不符合类型的值:

    SET sql_mode = '';
    

    导入完成后一定要记得恢复严格模式,避免后续数据出现隐患:

    SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 15:52:38