Navicat的.ncb备份文件不支持单表导出,必须先全量还原到不同名临时库(如加_tmp后缀),再通过“数据传输”功能仅勾选目标表并启用“仅导出数据”导出。
Navicat 备份文件里没有“单表导出”按钮,怎么办
navicat 的 .ncb 备份文件本质是加密打包包,不支持直接点开选表导出。你看到的“还原”操作默认作用于整个备份,不是按表粒度设计的——这不是你操作错了,是功能本身就不提供这个入口。
真正可行的路径只有一条:先全量还原到一个临时库,再从那个库中单独导出目标表。绕不开,也别找插件或隐藏菜单。
- 临时库必须与原库**不同名**(比如加
_tmp后缀),否则还原会覆盖原数据 - 临时库的字符集、排序规则最好和原库一致,否则导出时可能报
Illegal mix of collations - 如果原备份含多个数据库,还原时 Navicat 会默认选中全部;务必手动取消勾选无关库,只留目标库
还原到临时库后,用“数据传输”导出单表最稳
比起右键表 → “导出向导”,数据传输 功能对单表导出更可控,尤其当表带外键、触发器或大字段(如 TEXT、BLOB)时,它能跳过结构依赖,只传数据。
操作要点:
- 打开
工具 → 数据传输,源选择刚还原的临时库,目标选你要存数据的地方(本地 Excel / CSV / 另一个 MySQL 库 / SQLite 文件) - 左侧树形列表展开后,**只勾选目标表名**,别点“全选”或“数据库”节点
- 点击
高级→ 勾选仅导出数据(避免结构冲突),取消勾选创建表和删除表 - 若目标是 SQL 文件,注意
每条 INSERT 最多插入行数设为1或100,防超长语句执行失败
误用“结构同步”或“备份/还原向导”会丢数据
这两个功能常被当成“提取表”的捷径,但实际完全不匹配:
-
结构同步只比对并生成 DDL(建表语句),不处理数据,点了等于白点 -
备份/还原向导中的“选择对象”仅控制还原范围(库/表级),但前提是备份时就启用了“按对象备份”——而绝大多数人用的是“整个数据库备份”,此时该选项是灰色不可用的 - 试图用
SQL 文件备份+查找替换截取单表:容易漏掉CREATE TABLE后的注释、分区定义、索引语句,导入时直接报错Unknown storage engine 'InnoDB'或Table doesn't exist
MySQL 命令行才是兜底方案,Navicat 卡住时立刻切过去
当 Navicat 还原失败(比如提示 Error 2013: Lost connection to MySQL server)、或临时库因权限/版本问题起不来,别死磕界面。直接用 mysqldump 从原库抽表——前提是原库还在线且你能连上。
命令示例(Linux/macOS 终端或 Windows PowerShell):
mysqldump -h localhost -u root -p mydb users --no-create-info > users_data.sql
关键参数说明:
-
--no-create-info:只导数据,不导CREATE TABLE语句 -
--skip-triggers:排除触发器,防导入时报TRIGGER command denied -
--where="id > 1000":可加条件筛选行,比如只导近期数据 - 如果原库是 MySQL 8.0+ 而目标环境是 5.7,记得加
--compatibility=MYSQL40避免语法不兼容
备份文件不可逆,临时库别删太勤——多留一个 _tmp_v2 库,下次要另一张表时省半小时。










