Navicat不支持直接导出字段文档脚本,需执行SQL查询information_schema.columns等系统表获取元数据,再导出为CSV/Excel;导出时须选UTF-8 with BOM编码防乱码,并按ORDINAL_POSITION排序确保字段顺序正确。
Navicat 本身不支持直接导出字段文档的脚本功能
navicat 的「导出向导」和「打印」功能只能生成结构快照(如 html/pdf 表结构页),但无法按需提取字段名、类型、注释、是否为空、默认值等组合成可编辑的文档。它没有内置 sql 脚本生成器来批量拼接字段描述,也没有 api 或 js 脚本扩展入口——这意味着你不能在 navicat 界面里写个 for 循环自动拉出所有表的字段清单。
真正可行的路径是:绕过 Navicat 的 GUI,用它执行标准 SQL 查询,从 INFORMATION_SCHEMA 或数据库原生系统表中捞数据,再格式化为 Markdown/Excel/CSV。
用 SELECT 从 INFORMATION_SCHEMA 拉字段元数据(MySQL / PostgreSQL 兼容写法)
这是最稳定、跨版本可控的方式。Navicat 支持运行任意 SQL 并导出结果,只要查得准,导出就是一键的事。
- MySQL 用户优先查
INFORMATION_SCHEMA.COLUMNS,注意过滤TABLE_SCHEMA避免拉到sys、information_schema等系统库 - PostgreSQL 用户要查
pg_catalog.pg_attribute+pg_class+pg_namespace,更复杂,建议用现成视图information_schema.columns(标准兼容性更好) - 字段顺序建议按
ORDINAL_POSITION排,否则导出后列序可能乱 - 注释字段在 MySQL 是
COLUMN_COMMENT,PostgreSQL 是col_description(),SQL Server 是ext.name(通过sys.extended_properties关联),别硬套
一个最小可用的 MySQL 示例:
SELECT TABLE_NAME AS `表名`, COLUMN_NAME AS `字段名`, DATA_TYPE AS `类型`, IS_NULLABLE AS `允许NULL`, COLUMN_DEFAULT AS `默认值`, COLUMN_COMMENT AS `备注` FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'your_db_name' ORDER BY TABLE_NAME, ORDINAL_POSITION;
导出时选对格式,避免 Excel 乱码或换行丢失
Navicat「查询结果」右键 → 「导出向导」不是点完就完事。几个关键设置直接影响文档可用性:
- 导出格式选
CSV(不是 Excel):CSV 更轻量,字段含换行或逗号时勾选「使用引号包围字段内容」,否则备注里的回车会破坏行结构 - 编码必须选
UTF-8 with BOM(尤其 Windows 上用 Excel 打开),否则中文注释全变问号 - 不要勾选「导出列标题为第一行」以外的额外选项,比如「包含查询语句」「添加行号」——这些会污染文档正文
- 如果最终要转 Markdown,导出 CSV 后用 Python/pandas 或 VS Code 插件转,比在 Navicat 里硬调格式靠谱得多
想真自动化?得脱离 Navicat 做调度
Navicat 没有命令行模式(navicat.exe --run-sql xxx.sql 这种不存在),也无法被外部脚本调起并传参。所谓“自动化”,实际是三步分拆:
- 写好上面那个
SELECT查询,存为gen_doc.sql - 用数据库原生命令行工具执行它:MySQL 用
mysql -u user -p -D db_name output.csv;PostgreSQL 用psql -U user -d db_name -f gen_doc.sql -o output.csv - 再用 Python 或 awk 做后续清洗(比如把
tinyint(1)映射成「布尔」,把COLUMN_COMMENT中的 HTML 实体还原)
Navicat 在这个链路里,只适合前期探查语句逻辑和临时导出验证——别把它当自动化引擎用,它扛不住定时、参数化、错误重试这些事。
最容易被忽略的是权限:执行 INFORMATION_SCHEMA 查询需要 SELECT 权限,但某些生产账号被限制访问该库,这时连基础字段都查不出来,得先确认账号权限范围。











