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

MySQL INT列如何填充NULL?解决LOAD DATA导入自动填0问题

解决MySQL导入CSV时INT列空值被填充为0的问题

当然可以在INT列中存储NULL值,只要该字段没有被设置NOT NULL约束即可。以下是具体实现方法:

1. 确保表字段允许存储NULL

创建表时,明确指定fav_digit字段允许NULL(MySQL默认字段允许NULL,显式声明更清晰):

CREATE TABLE your_table (
    ID INT,
    NAME VARCHAR(7),
    fav_digit INT NULL -- 允许存储NULL值
);

2. 修改LOAD DATA导入语句

MySQL默认会将INT列的空值转换为0,我们需要通过语句设置,让空值被识别为NULL:

方法一:使用NULL ''指定空值映射

在LOAD DATA语句中添加NULL '',表示将CSV中的空字符串(无数据的字段)映射为NULL:

LOAD DATA LOCAL INFILE '/your/file/path/data.csv'
INTO TABLE your_table
FIELDS TERMINATED BY ' '  -- 根据你的CSV实际分隔符调整,比如逗号','或制表符'\t'
LINES TERMINATED BY '\n'
IGNORE 1 LINES  -- 跳过CSV的表头行
(ID, NAME, fav_digit)
NULL '';  -- 将空字段值转为NULL

方法二:使用用户变量+NULLIF函数(更灵活)

先将字段值读取到临时变量,再通过NULLIF函数把空字符串转为NULL,适合处理复杂的空值场景:

LOAD DATA LOCAL INFILE '/your/file/path/data.csv'
INTO TABLE your_table
FIELDS TERMINATED BY ' '
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(ID, NAME, @temp_fav)
SET fav_digit = NULLIF(@temp_fav, '');

注意事项

  • 请根据你的CSV实际分隔符调整FIELDS TERMINATED BY的参数,比如如果字段用逗号分隔就改为',',如果是多个空格或制表符,对应改为'\t'。
  • 如果CSV字段包含空格,建议使用OPTIONALLY ENCLOSED BY '"'来包裹字段,避免分隔符识别错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 00:31:05