MySQL Workbench导入CSV/JSON异常求助:CSV报错JSON导入0记录
MySQL Workbench导入CSV/JSON数据失败的解决方法
一、直接导入CSV报错的排查与解决
- 检查CSV文件格式
- 确认分隔符:MySQL默认用逗号,若你的CSV用制表符、分号等其他分隔符,需在导入向导的「数据导入设置」里对应修改字段分隔符(比如分号就改成
;)。 - 统一换行符:Windows系统换行符是
\r\n,Linux是\n,用Notepad++等工具将CSV转成对应系统的换行格式,避免读取异常。 - 处理特殊字符:字段包含逗号、引号时,必须用双引号包裹整个字段,比如
"张三, 李四",防止被误拆分。
- 确认分隔符:MySQL默认用逗号,若你的CSV用制表符、分号等其他分隔符,需在导入向导的「数据导入设置」里对应修改字段分隔符(比如分号就改成
- 核对表结构与CSV字段
- 列数匹配:CSV的列数要和目标表列数一致,或在导入时手动指定字段映射关系。
- 数据类型兼容:比如CSV日期格式需为
YYYY-MM-DD,对应表字段得是DATE类型;数字字段不能包含千分位逗号等非数字字符。
- 权限与路径检查
- 确保操作的MySQL用户拥有目标表的
INSERT权限。 - 避免中文路径/文件名,将CSV放到简单路径下,比如
C:\temp\data.csv。
- 确保操作的MySQL用户拥有目标表的
- 用
LOAD DATA INFILE命令替代向导(更稳定)
打开MySQL Workbench的查询编辑器,执行适配你场景的命令:
若遇LOAD DATA INFILE 'C:/temp/data.csv' INTO TABLE your_table_name FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 ROWS; -- 若CSV含表头,忽略第一行secure_file_priv错误,需在my.ini/my.cnf中设置secure_file_priv = ""(允许读取任意路径),重启MySQL服务后重试。
二、JSON显示数据但导入0条的解决
- 检查JSON格式:MySQL要求JSON为数组结构,示例如下:
单个对象或格式不规范的JSON会导致向导无法识别为可插入记录。[ {"id":1,"name":"张三"}, {"id":2,"name":"李四"} ] - 核对字段映射:确保JSON的键名与表字段名完全匹配(大小写敏感),比如表字段是
user_name,JSON里不能写成username。 - 检查数据类型:若JSON中数字以字符串形式存在(
"age":"25"),但表字段是INT类型,需将JSON中的类型改为数字("age":25),或确认MySQL能自动转换。 - 查看导入日志:完成导入后,在向导的「日志」选项卡中查看跳过原因,比如非空字段为空、主键重复等约束冲突。
三、通用排查点
- 编码统一:确保CSV/JSON文件编码与数据库、表的编码一致(建议用UTF-8),避免乱码或读取失败。
- 小批量测试:先导出1-2条数据生成CSV/JSON,尝试导入,排除大规模数据中的个别错误记录。
- 清空目标表:若表已有数据,检查是否存在主键冲突、唯一约束冲突导致导入失败。
内容的提问来源于stack exchange,提问作者Gabriel Mariano
相关产品推荐
相关产品推荐

