“Export Database”不是导出整个schema的正确入口,它仅生成DDL脚本;完整导出需用Tools→Backup Database(PostgreSQL)或Export Data(DB2/MySQL),并严格配置Include DDL、Include data、Use INSERT statements等选项。

“Export Database”不是导出整个 schema 的正确入口
点开数据库右键菜单里的 Export Database,默认只导出 DDL(CREATE TABLE 等),且不包含数据、约束、索引、注释,甚至可能跳过视图和序列——尤其当连接用户权限不足时,DBeaver 不报错,只静默跳过。这不是 bug,是设计:这个功能本质是“生成建表脚本”,不是备份。真正要导出整个 schema(含结构+数据+依赖对象),得走 Tools → Backup Database(PostgreSQL)或 Export Data(通用路径),但必须手动调对参数。
PostgreSQL schema 导出必须用 Backup 向导并启用 --inserts
DBeaver 对 PostgreSQL 的 Backup Database 功能底层调用 pg_dump,但 GUI 封装隐藏了关键开关。如果不勾选 Use INSERT statements,它默认生成 COPY 语句,跨版本或换数据库导入时大概率失败。常见报错如 ERROR: cannot copy to table "xxx": must be superuser or member of pg_read_server_files 就源于此。
-
General → Include DDL和Include data都要 ✅ 勾选 -
Format → Use INSERT statements必须 ✅ 勾选(对应--inserts) -
Objects → Include comments和Include extensions建议勾选,否则列注释、自定义类型会丢失 -
Advanced → Clean before restore和Use IF NOT EXISTS推荐勾选,避免目标库已有对象时中断
DB2 或 MySQL schema 导出得绕开 Backup,用 Export Data + 全选表
DB2 和 MySQL 没有统一的 Backup Database 命令行后端,DBeaver 的对应功能只是界面聚合。实测中,“Export Database”在 DB2 下常为空白输出;MySQL 则可能漏掉外键或触发器。稳妥做法是:在导航树中展开目标 schema,按 Ctrl+A 全选所有表(含视图需单独加),右键 → Export Data → 进向导。
- 第一页选
SQL file格式,别选 CSV/Excel —— 它们只导数据,不导结构 - 第二页务必勾选
Export data,否则只生成空CREATE TABLE -
Data transfer mode选SQL INSERT script(不是 JDBC Batch) -
Include constraints/indexes/comments全选,否则外键和字段注释消失 - 大 schema(>50 张表)建议开启
Split large scripts,设为 5–10MB/文件,防导入工具拒收
导出后校验:DDL 和数据是否真在同一个文件里
很多人导完打开 .sql 文件,发现只有 INSERT 没有 CREATE TABLE,就以为失败了——其实是因为没在 Export Data 向导里勾选 Include DDL(位置藏在 Advanced 选项卡里,非默认展开)。更隐蔽的问题是:DB2 用户若用 db2look -d dbname -e -a 单独导 DDL,再用 DBeaver 导数据,两个文件的表顺序不一致,恢复时可能因外键依赖报错。最省事的验证方式是 grep:
grep -E "^(CREATE|INSERT)" backup.sql | head -n 20
如果前 20 行里既有 CREATE TABLE 又有 INSERT INTO,说明结构和数据已合并;如果只有其一,回头检查向导里对应复选框是否被忽略。


















