DBX

数据传输

数据传输把一个数据源中的表或集合复制到另一个连接、数据库或 Schema。它适合环境迁移、测试数据准备和一次性数据整合,不是持续复制、CDC 或双向同步方案。

跨引擎传输会经过 DBX 的字段和类型转换层。目标数据库的权限、约束、触发器、默认值和类型语义仍会影响结果。重要迁移应先在测试环境演练并做行数与关键字段校验。

两个入口

数据传输向导

向导适合一次传输多张表。你可以分别选择源和目标连接、Catalog、数据库和 Schema,再配置建表、写入模式、目标表名大小写和批大小。

侧边栏复制与粘贴

在对象树中复制一张或多张表后,可以粘贴到目标位置:

  • 同一上下文中可选择“结构和数据”“仅结构”或“仅数据”,并逐表修改目标名称
  • 粘贴到另一个连接、数据库或 Schema 时,DBX 会自动打开数据传输向导并带入源表和目标位置
  • 表数据复制会跳过生成列或计算列,并对 PostgreSQL identity、SQL Server identity 等路径应用相应写入处理

向导流程

选择源位置

选择源连接、Catalog(如适用)、数据库和 Schema。DBX 只列出可传输的基础表;MongoDB 路径列出集合。

选择目标位置

选择另一个连接、数据库或 Schema。源和目标不能是完全相同的位置。

选择表

可以全选、搜索或只选择部分表。一次请求中的表必须来自同一个源位置。

配置传输选项

确认是否创建目标表、写入模式、目标表名大小写和批大小。

后台执行并检查结果

对话框关闭后任务继续运行。进度中心显示当前表、表序号、行数、耗时、失败表和取消状态。

传输选项

选项说明
创建目标表目标表不存在时,根据源元数据和目标数据库能力生成表结构
追加保留目标表已有数据并插入源数据
覆盖在传输该表前清空目标表,再写入源数据
Upsert目标路径支持且能确定键时,按键更新或插入
表名大小写保持原样、转小写或转大写;转换后的目标名必须互不冲突
批大小控制分页读取和分批写入,默认 1000,可在界面中调整

如果关闭“创建目标表”,目标表必须已经存在且字段可兼容。即使开启建表,跨引擎 DDL 也可能因目标数据库不支持某些类型、默认值、约束或对象而需要人工调整。

PostgreSQL 结构和所有者

PostgreSQL 到 PostgreSQL 且启用创建表时,DBX 会在能力允许时处理序列、索引、外键以及部分 Schema 级对象和依赖。若源对象所有者在目标实例中不存在,开始前会提示选择:

  • 跳过相关所有者信息
  • 把缺失所有者重新分配为目标当前用户
  • 取消并先在目标实例创建所需角色

这不等价于完整的 pg_dump / pg_restore。扩展、权限、策略、触发器或依赖复杂时,仍应使用 PostgreSQL 原生迁移工具验证。

失败处理

多表任务不会因为第一张表失败就立即丢弃整个队列。DBX 会记录该表的错误并继续尝试后续表,最后以成功或带失败的终态结束。

  • 进度中保存每张失败表及错误摘要
  • 失败数量较多时,界面只展示有限条目并报告被省略的数量
  • 同一目标表已有传输任务运行时,新任务会被阻止,避免并发覆盖
  • 取消会停止后续读取和写入,但已提交的数据不会自动撤销

因此“任务完成”不代表所有表都成功;应检查最终状态、失败列表、目标行数和关键字段。

数据库覆盖范围

DBX 按驱动能力清单过滤源和目标连接。当前实现同时包含 SQL 到 SQL、MongoDB 到 MongoDB,以及部分 MongoDB 与 SQL 之间的转换路径;并非所有已支持连接都提供数据传输。

不同组合的能力也不完全相同,例如:

  • 某些引擎只能传输表数据,不能复用源 DDL
  • Upsert 依赖目标数据库和可识别的键
  • Catalog、Schema、identity、数组、JSON 和二进制值的处理因引擎而异
  • 专用搜索、向量、消息队列和配置中心连接不使用此通用表传输入口

如果连接未出现在下拉列表中,表示当前驱动没有声明数据传输能力,而不是仅仅缺少 UI 入口。

传输前检查

  • 目标连接是否开启只读保护;只读目标会被直接阻止
  • 源和目标账号是否分别具有读取、建表和写入权限
  • 目标表名大小写转换后是否冲突
  • 主键、唯一约束、外键、触发器和非空字段是否会拒绝数据
  • 从生产环境复制到低环境前是否需要脱敏
  • 大表是否更适合数据库原生导出、导入或在线迁移工具

相关功能