Navicat 导出 JSON 失败主因是版本低于15不支持且导出格式未手动选JSON;需勾选“导出数据”、取消“导出表结构”,并确保JSON选项中“使用双引号包裹字段名”已启用。
Navicat 导出 JSON 时为什么总得到 CSV 或 SQL?
因为 navicat 默认导出格式不是 json,导出向导里必须手动选对格式,且仅部分版本(15+)原生支持 json 导出。老版本点“导出”→“导出向导”→在“导出格式”下拉框里根本找不到 json,这是最常卡住的第一步。
- 确认 Navicat 版本:打开
帮助 → 关于 Navicat,低于 v15 的需先升级或改用命令行导出 - 导出路径不能含中文或空格,否则 JSON 文件可能生成失败但无提示
- 勾选
导出表结构会导致输出包含CREATE TABLE语句——这不是 JSON,会直接破坏格式
导出 JSON 的三个关键设置项(v15.0.28+ 实测)
进入 导出向导 后,这三项不调对,导出的 JSON 要么缺字段名、要么嵌套错乱、要么全是字符串:
-
导出格式必须选JSON(不是 “JSON with BLOB as Base64”) -
导出数据勾选导出数据,取消勾选导出表结构 -
JSON 格式选项中:每行一条记录决定是否换行;使用双引号包裹字段名必须勾选(否则字段名无引号,JSON 解析失败)
示例正确片段:
{"id":1,"name":"张三","created_at":"2024-01-01"}
错误片段(字段名没引号):{id:1,name:"张三"} —— 这不是标准 JSON
导出大表时 JSON 文件体积暴涨、浏览器打不开怎么办?
Navicat 导出 JSON 不压缩、不流式写入,10 万行文本型数据轻松生成 200MB+ 文件,fs.readFile 直接内存溢出,JSON.parse 报 SyntaxError: Unexpected token 往往是文件被截断或 BOM 头干扰。
- 先导出为
CSV,再用脚本转 JSON(更可控):node csvtojson.js users.csv > users.json - 若坚持用 Navicat,务必勾选
每行一条记录,这样可用readline流式解析,避免全量加载 - 导出前执行
SET NAMES utf8mb4,否则中文字段可能出现乱码字符,JSON 解析器拒绝处理
MySQL 时间字段导出成 JSON 后变成字符串还是时间戳?
Navicat 导出 JSON 时,DATETIME 和 TIMESTAMP 字段一律转为 ISO 8601 字符串(如 "2024-03-15T09:22:33"),不会转成毫秒时间戳。想用时间戳得自己后处理。
- JavaScript 端可直接
new Date(jsonRow.created_at)解析 - Python 用
datetime.fromisoformat()(注意末尾可能带Z,需先 replace) - 如果数据库里存的是 Unix 时间戳(int),但字段类型是
INT,Navicat 仍当普通数字导出,不会自动转格式
真正麻烦的是 TINYINT(1) 当布尔值用的情况——Navicat 导出为 1 或 0,不是 true/false,前端需手动映射

















