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

MySQL数据导入报错求助:日期格式与空值问题排查

错误原因分析与解决方法

一、日期格式错误(错误码1292)

你的birthdate字段定义为DATETIME类型,MySQL默认仅识别**YYYY-MM-DD**(或YYYY-MM-DD HH:MM:SS)格式的日期,而你导入的日期是DD-MM-YYYY格式(比如18-02-1962是日-月-年),MySQL无法解析这种格式,因此抛出错误。

解决方法:

  • 修改源数据:将所有日期转换为YYYY-MM-DD格式,比如把18-02-1962改为1962-02-18。
  • 导入时转换(推荐):如果使用LOAD DATA INFILE命令导入,可通过STR_TO_DATE函数实时转换格式,示例代码:
    LOAD DATA INFILE 'your_file.csv'
    INTO TABLE employee
    FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    IGNORE 1 ROWS
    (employee_id, last_name, first_name, title, reports_to, @birthdate, @hire_date, address, city, state, country, postal_code, phone, fax, email)
    SET birthdate = STR_TO_DATE(@birthdate, '%d-%m-%Y'),
        hire_date = STR_TO_DATE(@hire_date, '%d-%m-%Y');
    
  • 临时调整SQL模式(不推荐):修改sql_mode关闭严格日期校验,但可能导致数据格式混乱,命令如下:
    SET sql_mode = 'NO_ZERO_DATE,NO_ZERO_IN_DATE';
    

二、整数空值错误(错误码1366)

reports_to字段定义为INT NULL(允许为空),但你导入的数据中该字段值是空字符串''。MySQL在严格模式下,无法将空字符串转换为整数类型的NULL,因此报错。

解决方法:

  • 修改源数据:将所有reports_to字段的空字符串替换为NULL。
  • 导入时处理:使用NULLIF函数将空字符串转为NULL,结合LOAD DATA的示例:
    LOAD DATA INFILE 'your_file.csv'
    INTO TABLE employee
    FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    IGNORE 1 ROWS
    (employee_id, last_name, first_name, title, @reports_to, @birthdate, @hire_date, address, city, state, country, postal_code, phone, fax, email)
    SET reports_to = NULLIF(@reports_to, ''),
        birthdate = STR_TO_DATE(@birthdate, '%d-%m-%Y'),
        hire_date = STR_TO_DATE(@hire_date, '%d-%m-%Y');
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:55:42