MySQL Workbench导入CSV时DOUBLE字段允许空值及双引号兼容问题求助
MySQL Workbench导入CSV双引号兼容+空DOUBLE列自动转NULL配置方案
双引号兼容配置(解决1366字段类型不匹配错误)
该报错是因为导入工具未识别双引号作为字段包裹符,把带双引号、内部含空格/分隔符的字段拆分为多列,导致后续字段值错位。配置步骤如下:
- 进入MySQL Workbench导入向导,选完目标CSV文件后,到「导入设置」配置页
- 在字段配置区,将 Fields Enclosed By 设为
",工具会自动识别双引号包裹的内容为单个完整字段,不会被分隔符拆分 - 若CSV内字段内部的双引号用两个连续双引号转义(如
"He said ""hello"""),同步将 Fields Escaped By 也设为",匹配CSV转义规则 - 确认字段分隔符和CSV一致:示例中为制表符分隔则填
\t,逗号分隔填,即可
DOUBLE列空白自动转NULL配置(解决1265数据截断错误)
该报错是因为DOUBLE字段不允许空值,或导入时未将空白单元格转为合法的NULL值。配置步骤如下:
步骤1:调整表结构允许DOUBLE字段存储NULL
执行SQL修改对应字段的非空约束:
ALTER TABLE 你的实际表名 MODIFY COLUMN la DOUBLE NULL, MODIFY COLUMN lon DOUBLE NULL, MODIFY COLUMN per_month DOUBLE NULL;
步骤2:导入时开启空白值转NULL规则
- 在导入向导的「高级选项」配置区,勾选 Treat empty strings as NULL 选项,导入工具会自动将所有空白单元格转换为NULL,符合DOUBLE字段的取值规则
可选:命令行导入配置
如果使用LOAD DATA命令直接导入,可参考以下写法:
LOAD DATA INFILE '你的CSV文件绝对路径' INTO TABLE 你的实际表名 -- 按需修改分隔符,制表符用'\t',逗号用',' FIELDS TERMINATED BY '\t' ENCLOSED BY '"' LINES TERMINATED BY '\n' -- 如果CSV第一行是表头则加这行,否则删除 IGNORE 1 ROWS (id, name, host_id, host_name, n_g, n, la, lon, type, price, minimum, num_review, Last, @per_month, count, avaliability) -- 空白值转NULL,la、lon字段如果也存在空白,按相同规则新增即可 SET per_month = NULLIF(@per_month, '');
配置完成后可先导入前100行测试,确认无报错后再执行全量7.8k行导入即可。
内容的提问来源于stack exchange,提问作者user38543
相关产品推荐
相关产品推荐

