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

MySQL导入JSON文件显示0条记录问题求助

解决MySQL导入JSON预览正常但导入0条记录的问题

排查与解决步骤:

  1. 检查JSON文件结构格式

    • 确保JSON采用每行单个对象的格式(如{"column1":"値1","column2":123}),MySQL导入向导默认不支持数组包裹的JSON结构(如[{"..."},{"..."}]),若为数组格式,需拆分为每行一个对象,或改用LOAD DATA配合JSON函数处理。
    • 核对JSON对象的键名与目标表列名完全一致(Linux系统下MySQL列名区分大小写),键名不匹配会导致字段映射失败,数据无法写入。
  2. 确认导入向导的字段映射

    • 即使预览能看到数据,也要逐一检查100+列的映射关系,避免存在未自动映射的字段,手动补全所有列的映射。
    • 验证目标表列的数据类型与JSON对应值的类型匹配,例如日期格式需符合MySQL的DATE/DATETIME规范,数值类型需对应,类型不匹配会导致数据被过滤。
  3. 用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'))
    ;
    
  4. 查看错误日志定位问题

    • 检查MySQL错误日志(路径如/var/log/mysql/error.log,依系统而定),日志中会记录导入失败的具体原因,比如权限不足、数据格式错误等。
    • 开启导入向导的详细日志/错误提示功能,获取更精准的失败信息。
  5. 编码与权限检查

    • 确认JSON文件为无BOM的UTF-8编码,带BOM的UTF-8可能导致解析异常。
    • 确保MySQL用户拥有FILE权限及目标表的写入权限,权限不足会导致数据无法写入但提示模糊。

内容的提问来源于stack exchange,提问作者Inkyu Kim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 08:23:24