最直接可控的方式是右键数据库→转储SQL文件→仅结构,生成含字段、索引、外键、注释的CREATE语句;务必确认Dump Type为Structure only、勾选DROP TABLE和导出注释、文件名带时间戳。
右键数据库 → 转储SQL文件 → 仅结构
这是最直接、最可控的方式,适合改表前快速存档当前 ddl。navicat 会生成标准 create table 语句,含字段、索引、外键、注释等全部结构定义。
操作路径:右键目标数据库 →「转储SQL文件」→「仅结构」(英文版叫 Structure Only)。
- 务必点击「高级」按钮,确认
Dump Type是Structure only,不是Structure and Data - 勾选
添加DROP TABLE语句:避免后续导入时报“表已存在”错误 - 勾选
导出注释:保留COMMENT字段说明,这对理解业务逻辑很关键 - 文件名建议带时间戳,比如
users_20260727_struct.sql,避免覆盖
用「结构同步」生成带 IF NOT EXISTS 的建表脚本
如果你要的不是静态备份,而是可安全重复执行的初始化脚本(比如用于 CI/CD 或新环境部署),结构同步 比转储更严谨——它默认不碰数据,且自动处理外键顺序、字符集继承、引擎差异等细节。
操作路径:右键数据库 →「结构同步」→ 目标选择「保存到文件」。
- 在「选项」里必须确认:勾选
生成CREATE语句,取消勾选同步数据(虽然默认关着,但务必手动核对) -
生成DROP语句可选,但建议勾上;若目标库为空,可不勾,靠IF NOT EXISTS防重 - 生成的 SQL 里会有
CREATE TABLE IF NOT EXISTS,比转储脚本更健壮 - 注意:它不生成单个完整
.sql文件,而是按对象分块输出,但仍是纯文本,可直接运行
导出向导里取消“数据”复选框是常见翻车点
很多人以为只要在导出向导里只勾选几张表,就等于只导出结构——错。Navicat 默认勾选了独立的 数据 复选框,它位于第二步「导出设置」页、表对象列表下方,不起眼但决定性。
- 哪怕你只选了一张表,只要
数据复选框没取消,导出文件里照样有INSERT语句 - 该选项不在第一步(连接选择),也不在最后一步(保存路径),容易被跳过
- 导出格式必须选
SQL;Excel/CSV 根本不支持纯结构导出 - 导出后建议用文本编辑器搜索
INSERT、VALUES、TRUNCATE,确认无误再归档
别混淆「备份」和「转储SQL文件」
「备份」功能(生成 .nb3 文件)是 Navicat 原生二进制格式,支持对象级还原,但它是封闭格式,不能直接查看或编辑 DDL。「转储SQL文件」才是你要的——生成人类可读、可版本控制、可审计的 .sql 文本。
- 右键数据库时,看到「备份」和「转储SQL文件」两个选项,选后者
- 如果误点了「备份」,得到的是
.nb3,无法直接验证是否真没导出数据 - 改表前若需留痕,
.sql文件可提交 Git;.nb3不适合这类场景
INSERT 或 SELECT ... INTO。导出时若勾选了它们,即使关闭了 数据,生成的 SQL 仍可能出现数据操作语句。保险做法是——只勾选 Tables,其他类型(Views、Functions、Events、Triggers)一律不选,除非你明确需要。


















