MySQL Workbench导入CSV空值被填0而非Null如何配置
MySQL Workbench CSV空单元格导入为NULL的解决方案
该问题的核心原因是MySQL Workbench的导入向导默认会对CSV空单元格做显式赋值处理,不会触发表字段的默认值规则,因此仅修改字段默认值不会生效,可通过以下方法解决:
方案1:调整导入向导配置(最简便)
- 导入流程走到「Configure Import Settings」步骤时,勾选
Treat empty strings as NULL(部分版本显示为Use existing fields as NULL if field is empty)选项,后续导入的空单元格就会自动识别为NULL写入表。
方案2:修改向导生成的导入脚本(适配旧版本Workbench)
如果你的Workbench版本没有上述勾选项,可通过修改自动生成的导入脚本实现:
- 导入向导走到最后一步时,不要直接点击完成,选择「Save Script to File」导出自动生成的导入SQL
- 打开脚本找到
LOAD DATA相关语句,在语句末尾追加以下逻辑:SET Year = NULLIF(Year, 0), Volume = NULLIF(Volume, 0), x = NULLIF(x, 0) - 运行修改后的脚本即可完成导入,自动将误写入的0转换为NULL。
方案3:使用原生LOAD DATA语句导入
如果不想依赖可视化向导,可直接写SQL完成导入,自带空值处理能力,示例如下:
LOAD DATA INFILE '你的CSV文件本地路径' INTO TABLE 你的表名 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS -- 若CSV第一行是表头则保留该行,否则删除 (id, @Year, @Volume, @x) SET Year = NULLIF(@Year, ''), Volume = NULLIF(@Volume, ''), x = NULLIF(@x, '');
执行上述语句会直接将CSV中的空单元格识别为NULL写入,不需要后续手动转换。
内容的提问来源于stack exchange,提问作者tgsam
相关产品推荐
相关产品推荐

