navicat 导出数据不带字段注释,因 insert 语法不支持 comment;需导出含注释的表结构或数据字典:在设计表中填写字段及表级注释,转储 sql 时勾选“include comments”,并确认 mysql 版本兼容。
navicat 导出「数据」本身不会、也不能带字段注释——因为 insert 语句语法根本不允许写 comment,强行加会报错。你真正需要的,是导出「含注释的表结构」或「含注释字段信息的数据字典」,两者完全不是一回事。
导出建表语句时带上 COMMENT='xxx'
这是最常见也最容易混淆的场景:你想让 CREATE TABLE 里包含字段和表的注释,比如 name VARCHAR(50) COMMENT '用户姓名'。
- 必须先在 Navicat 的「设计表」界面中真实填写注释:右键字段列表列头 → 勾选
Comment才能输入;表级注释填在窗口最底部的Comment输入框 - 右键数据库或表 → 「转储 SQL 文件」→ 选择「仅结构」或「结构和数据」→ 点击「高级」→ 必须勾选
Include comments - 导出后打开 .sql 文件,搜索
COMMENT=或MODIFY COLUMN.*COMMENT,确认是否出现;没搜到就说明:要么没填注释,要么没勾选项,要么 MySQL 版本太低( - 注意:这个选项对
INSERT部分完全无效,它只影响CREATE TABLE和后续可能生成的ALTER TABLE ... COMMENT语句
导出 Excel/CSV 时显示字段注释(数据字典)
如果你要的是类似「字段名|类型|注释」这样的表格,用于交接或文档,就得绕过“导出表”功能,改用查询系统表的方式。
- 新建查询,执行以下 SQL(把
your_database_name替成实际库名):
SELECT TABLE_NAME AS `表名`, COLUMN_NAME AS `字段名`, DATA_TYPE AS `类型`, IS_NULLABLE AS `是否为空`, COLUMN_DEFAULT AS `默认值`, COLUMN_COMMENT AS `注释` FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'your_database_name' ORDER BY TABLE_NAME, ORDINAL_POSITION;
- 运行后,在结果集右键 → 「导出结果」→ 选 Excel 或 CSV;务必勾选「包含列标题」
-
COLUMN_COMMENT为空时,Excel 里显示NULL而非空白,后续处理需注意判空 - PostgreSQL 用户不能用这个 SQL——得关联
pg_class、pg_attribute和pg_description,且字段注释必须已用COMMENT ON COLUMN显式写入,Navicat 图形界面填的无效
为什么点了“包含注释”却没生效
不是 Navicat 没干活,而是它只输出数据库里真实存在的东西,不补、不猜、不提示缺失。
- MySQL 中字段注释最大长度为 1024 字符,超长部分会被静默截断,填完别留尾部空格
- 连接的是旧版 MySQL(如 5.6 之前)或 SQLite?它们压根不支持
COMMENT子句,填了也存不进库 - PostgreSQL 下在 Navicat「设计表」里填的字段注释只是 UI 层面的幻觉,没执行
COMMENT ON COLUMN就等于没写 - 导出目标选了 Excel 或 HTML?那根本不会生成 SQL,自然不会有
COMMENT出现——这属于格式选错,不是设置问题
真正容易被忽略的点是:注释是否已实际写入数据库。Navicat 不是注释编辑器,它是数据库的“传声筒”。你得先用 SHOW FULL COLUMNS FROM table_name 确认 Comment 列有内容,再谈导出。否则所有勾选都白搭。











