DBeaver导出整库需手动配置Dump Database向导:先正确设置Local Client路径(如/opt/homebrew/bin/mysqldump),再勾选Export data、SQL INSERT模式、Include constraints/indexes/comments及Use batch insert,否则仅生成空DDL无数据。

DBeaver 本身不提供“一键整库导出含结构+数据”的默认按钮,必须手动配置 Dump Database 向导里的关键选项,否则导出的.sql文件很可能只有空表(无数据)、缺外键、没注释,甚至根本执行失败。
为什么右键「Dump database」后导出失败或只生成空文件
常见错误现象是点击 Start 后进度条不动、弹窗一闪而过,或生成的.sql里全是 CREATE TABLE 但没有 INSERT。根本原因是 DBeaver 底层调用的是本地命令行工具(如 mysqldump、pg_dump),而它没找到可用客户端:
- Mac 用户未安装
mysql-client或postgresqlCLI 工具 - DBeaver 没自动识别到已安装路径,或识别错了(比如指向了 Homebrew 的旧版本)
- Windows 用户没把
mysqldump.exe所在目录加进系统PATH,也没在 DBeaver 里手动指定
解决方法:右键数据库 → Tools → Dump database → 点 Next → 在第二步看到 Local Client 区域为空或报错时,点 Back → 点 Browse → 手动定位到你本地安装的 CLI 工具目录(Mac 上通常是 /opt/homebrew/bin/mysqldump 或 /usr/local/bin/pg_dump)→ 再点 Next 继续。
导出时必须勾选的四个核心参数
即使客户端配置正确,DBeaver 默认仍只导出 DDL(建表语句),不会导出任何数据或约束。关键配置分散在向导不同页面,容易漏掉:
-
Export data:必须 ✅ 勾选,否则导出文件里只有CREATE TABLE,没有一行INSERT -
Data transfer mode:选SQL INSERT script,不是JDBC Batch—— 后者不生成可读 SQL,且部分数据库驱动不支持 -
Include constraints/indexes/comments:在Advanced页,必须全选,否则外键、唯一索引、字段注释全丢失 -
Use batch insert:数据量 ≥5000 行时建议 ✅,避免内存溢出;但需确认目标数据库驱动支持(MySQL 8.0+、PostgreSQL 12+ 均支持)
导出 MySQL/PostgreSQL/DB2 时的参数差异
不同数据库对 mysqldump 或 pg_dump 的参数映射不同,DBeaver 向导里看似相同的选项,实际生成的命令可能差异很大:
- MySQL:
--routines(导出存储过程)和--triggers需单独勾选,否则不会出现在导出文件中 - PostgreSQL:勾选
Include sequences才会导出CREATE SEQUENCE和SETVAL,否则自增 ID 重置 - DB2:DBeaver 不原生支持 DB2 的
db2look,必须用「生成 SQL → DDL」单独导出结构,再用「Dump database」导出数据,最后手动合并两个文件
例如,导出 PostgreSQL 时若没勾选 Include sequences,恢复后新插入记录的主键可能从 1 开始,而不是接续原库最大值。
大库导出容易被忽略的三个坑
导出 10GB+ 数据库时,光靠勾选参数还不够,以下三点不处理,轻则导出中断,重则导入失败:
-
Split large scripts必须 ✅ 并设为 ≤10MB/文件 —— 多数数据库导入工具(如 phpMyAdmin、DBeaver 自身 Restore)会拒绝加载超大的单文件 - 导出前确认用户权限:MySQL 需要
SELECT+LOCK TABLES+SHOW VIEW;PostgreSQL 需要pg_read_all_data角色或对应表级SELECT - 如果数据库里有循环外键(A→B→A),
Dump database默认不处理依赖顺序,会导致导入时报foreign key constraint错误;此时必须取消勾选Disable foreign key checks(MySQL)或启用Insert into tables in dependency order(PostgreSQL)
真正麻烦的不是操作步骤多,而是这些配置项藏在不同页面、命名不统一、且错误反馈极弱 —— 它不会告诉你“缺 client”,只会静默跳过;也不会提示“没权限”,只是漏掉几张系统表。动手前先看一眼日志窗口(View → Show System Console),比反复试错快得多。


















