DBeaver 无独立“克隆数据”功能,批量复制实为「导出+导入」组合操作,必须先建目标表结构再写入数据;导出DDL需手动处理外键顺序、语法兼容性及库名前缀;导出数据时须在源表右键选Export Data、目标类型设为Database,并严格匹配字段名与类型,误用Import Data将导致失败。

直接说结论:DBeaver 本身没有“克隆数据”的独立功能,所谓批量复制,本质是「导出 + 导入」两步组合,且必须分清结构和数据——先建好目标表,再灌数据,顺序错或映射错就会失败。
导出表结构(DDL)时,多选表后生成的SQL可能不兼容目标库
右键多张表 → Generate SQL → DDL 是最快建结构的方式,但要注意三点:
- 外键依赖未自动排序:比如
orders表依赖users,但 DDL 可能先建orders,执行报错;需手动调整语句顺序,或临时禁用外键检查(SET FOREIGN_KEY_CHECKS = 0) - 数据库特定语法残留:MySQL 的
AUTO_INCREMENT、PostgreSQL 的SERIAL、Oracle 的SEQUENCE不通用;导出前在连接设置里勾选「Use generic data types」可降低风险 - 目标库名没自动替换:生成的
CREATE TABLE users在目标库执行时,若想建到test_db下,得手动加 schema 前缀,如CREATE TABLE test_db.users
用“导出数据”往另一个库写入时,最容易卡在字段映射和事务配置
右键源表 → Export Data → 目标选 Database,这步看似简单,实际失败率高,关键在中间页的配置:
-
Tables mapping里点开Target container,确认目标表已存在且字段名、类型、顺序完全一致;哪怕只是created_at和create_time字段名差一个字,DBeaver 默认不会自动匹配,得手动拖拽对齐 -
Fetch size设太小(如默认 100)会导致万级数据导出极慢;设太大(如 5000)可能触发内存溢出;建议从500起调 -
Do commit after row insert和Use multi-row value insert必须配合:前者设100,后者设50,才能批量插入(如INSERT INTO t VALUES (),(),()...),否则每行都 commit,速度掉一个数量级
误点“导入数据”就全盘跑偏
新手常犯的致命错误:在目标表上右键点 Import Data,试图把源库数据“拉进来”。这是反向操作——Import Data 只认外部文件(CSV/JSON/SQL脚本),不支持跨库直连读取。正确路径永远是:在源表上点 Export Data,目标类型选 Database,然后指定目标连接和表。
如果已经连错方向,最省事的补救是:删掉目标库刚建的空表,回到源库重走一遍 Export Data 流程,别硬改导入配置。
真正麻烦的不是步骤多,而是 DBeaver 不报具体映射失败原因——它只弹“Error during data transfer”,得自己翻日志(菜单栏 Window → Show View → Error Log),里面才写明哪一列类型不匹配或长度超限。











