Navicat无法一键导出完整数据字典,需手动执行information_schema查询组合表结构、字段注释、索引及外键信息,再导出为Excel/CSV;注意字符集设为utf8mb4并选UTF-8编码,避免注释乱码或为空。
导出 MySQL 数据库的完整数据字典(含表结构、字段注释、索引、外键)
navicat 本身不提供“一键导出带完整注释的数据字典”功能,所谓“完整数据字典”,必须手动组合 information_schema 查询 + navicat 的导出能力。直接点“导出” → “结构”只会得到建表语句,comment 可能丢失,索引和外键关系也不直观。
实操建议:
- 先在 Navicat 中执行自定义 SQL,从
information_schema.columns、information_schema.key_column_usage、information_schema.table_constraints等视图拼出带注释的字段清单 - 用
SELECT构造结果集,确保包含:表名、字段名、类型、是否为空、默认值、COLUMN_COMMENT、是否主键、是否外键、索引名、约束名等关键列 - 查完后右键结果集 → “导出向导”,选 Excel 或 CSV;别选“SQL”格式,否则导出的是查询语句本身,不是结果
Navicat 导出时字段注释(COLUMN_COMMENT)为空或乱码
常见错误现象:导出的 Excel 里 COLUMN_COMMENT 列全是空,或显示问号、方块。这不是 Navicat bug,而是字符集没对齐——源库表用 utf8mb4,但 Navicat 连接参数或导出编码设成了 latin1 或未声明 character_set_results。
实操建议:
- 连接属性 → “高级”页 → 勾选“使用 MySQL 字符集”,并确认“字符集”下拉框选的是
utf8mb4 - 导出向导最后一步,“编码”选项务必选
UTF-8(不是 UTF-8 with BOM),Excel 才能正常识别中文注释 - 如果仍为空,检查原字段是否真有注释:执行
SHOW FULL COLUMNS FROM table_name,看Comment列是否有内容;没写COMMENT就真没有
用 Navicat “转储 SQL 文件”代替数据字典?风险在哪
有人图省事,直接用 Navicat 的“转储 SQL 文件”功能,以为能当字典用。它确实导出 CREATE TABLE,但有几个硬伤:
-
COMMENT在部分 Navicat 版本中会被过滤掉(尤其老版本 v12 或更低),即使建表时写了,导出 SQL 里也消失 - 外键约束名(
CONSTRAINT `fk_xxx`)可能被省略,只剩FOREIGN KEY关键字,无法追溯关联关系 - 索引信息只有
KEY或UNIQUE KEY,不区分是普通索引、联合索引还是前缀索引,也没字段顺序说明 - 导出文件是纯 SQL,没法按字段维度排序、筛选、加颜色标记——这恰恰是架构师审模型最需要的
自动化补全:用 Navicat 查询+剪贴板快速生成 Markdown 表格
手动整理几百张表的字段太慢,但又不想写 Python 脚本。可以利用 Navicat 的“复制为”功能快速生成可读性高的中间格式。
实操建议:
- 执行完带注释的字段查询后,全选结果集 → 右键 → “复制为” → “复制为 Markdown 表格”(v16+ 支持;v15 需升级)
- 粘贴到 Typora 或 VS Code,立刻获得对齐表格;再用正则替换清理多余空格或转义符号
- 注意:Navicat 默认不复制表头行的字段名,需勾选“包含列标题”;否则第一行是空的
- 如果要分表导出,用
GROUP BY table_name+ 多次执行,比写循环更可控
真正卡住人的,从来不是 Navicat 能不能点出来,而是你查 information_schema 时漏掉了 key_column_usage 里的 REFERENCED_TABLE_NAME —— 这个字段一丢,外键指向哪张表就全靠猜了。

















