MySQL导入JSON文件显示0条记录问题求助
解决MySQL导入JSON预览正常但导入0条记录的问题
排查与解决步骤:
检查JSON文件结构格式
- 确保JSON采用每行单个对象的格式(如
{"column1":"値1","column2":123}),MySQL导入向导默认不支持数组包裹的JSON结构(如[{"..."},{"..."}]),若为数组格式,需拆分为每行一个对象,或改用LOAD DATA配合JSON函数处理。 - 核对JSON对象的键名与目标表列名完全一致(Linux系统下MySQL列名区分大小写),键名不匹配会导致字段映射失败,数据无法写入。
- 确保JSON采用每行单个对象的格式(如
确认导入向导的字段映射
- 即使预览能看到数据,也要逐一检查100+列的映射关系,避免存在未自动映射的字段,手动补全所有列的映射。
- 验证目标表列的数据类型与JSON对应值的类型匹配,例如日期格式需符合MySQL的
DATE/DATETIME规范,数值类型需对应,类型不匹配会导致数据被过滤。
用
LOAD DATA配合JSON函数批量导入(适配多列场景)
针对100+列的情况,可通过查询自动生成字段映射语句,避免手动编写:-- 先执行此查询生成SET部分的语句 SELECT CONCAT(column_name, ' = JSON_UNQUOTE(JSON_EXTRACT(@json, "$.', column_name, '")),') FROM information_schema.COLUMNS WHERE TABLE_NAME='你的目标表名' AND TABLE_SCHEMA='你的数据库名'; -- 将生成的语句拼入以下LOAD DATA命令 LOAD DATA INFILE '/你的JSON文件路径/file.json' INTO TABLE 你的目标表名 FIELDS TERMINATED BY '\n' LINES TERMINATED BY '\n' (@json) SET -- 粘贴上面生成的所有列映射语句,注意删除最后一行的逗号 column1 = JSON_UNQUOTE(JSON_EXTRACT(@json, '$.column1')), column2 = JSON_UNQUOTE(JSON_EXTRACT(@json, '$.column2')) ;查看错误日志定位问题
- 检查MySQL错误日志(路径如
/var/log/mysql/error.log,依系统而定),日志中会记录导入失败的具体原因,比如权限不足、数据格式错误等。 - 开启导入向导的详细日志/错误提示功能,获取更精准的失败信息。
- 检查MySQL错误日志(路径如
编码与权限检查
- 确认JSON文件为无BOM的UTF-8编码,带BOM的UTF-8可能导致解析异常。
- 确保MySQL用户拥有
FILE权限及目标表的写入权限,权限不足会导致数据无法写入但提示模糊。
内容的提问来源于stack exchange,提问作者Inkyu Kim
相关产品推荐
相关产品推荐

