128 lines
5.5 KiB
Plaintext
128 lines
5.5 KiB
Plaintext
---
|
|
title: 数据传输
|
|
description: 在不同连接、数据库、Schema 或数据库引擎之间批量复制表数据,并跟踪每张表的结果。
|
|
---
|
|
|
|
数据传输把一个数据源中的表或集合复制到另一个连接、数据库或 Schema。它适合环境迁移、测试数据准备和一次性数据整合,不是持续复制、CDC 或双向同步方案。
|
|
|
|
<Callout type="warn">跨引擎传输会经过 DBX 的字段和类型转换层。目标数据库的权限、约束、触发器、默认值和类型语义仍会影响结果。重要迁移应先在测试环境演练并做行数与关键字段校验。</Callout>
|
|
|
|
## 两个入口
|
|
|
|
### 数据传输向导
|
|
|
|
向导适合一次传输多张表。你可以分别选择源和目标连接、Catalog、数据库和 Schema,再配置建表、写入模式、目标表名大小写和批大小。
|
|
|
|
### 侧边栏复制与粘贴
|
|
|
|
在对象树中复制一张或多张表后,可以粘贴到目标位置:
|
|
|
|
- 同一上下文中可选择“结构和数据”“仅结构”或“仅数据”,并逐表修改目标名称
|
|
- 粘贴到另一个连接、数据库或 Schema 时,DBX 会自动打开数据传输向导并带入源表和目标位置
|
|
- 表数据复制会跳过生成列或计算列,并对 PostgreSQL identity、SQL Server identity 等路径应用相应写入处理
|
|
|
|
## 向导流程
|
|
|
|
<Steps>
|
|
<Step>
|
|
### 选择源位置
|
|
|
|
选择源连接、Catalog(如适用)、数据库和 Schema。DBX 只列出可传输的基础表;MongoDB 路径列出集合。
|
|
|
|
</Step>
|
|
<Step>
|
|
### 选择目标位置
|
|
|
|
选择另一个连接、数据库或 Schema。源和目标不能是完全相同的位置。
|
|
|
|
</Step>
|
|
<Step>
|
|
### 选择表
|
|
|
|
可以全选、搜索或只选择部分表。一次请求中的表必须来自同一个源位置。
|
|
|
|
</Step>
|
|
<Step>
|
|
### 配置传输选项
|
|
|
|
确认是否创建目标表、写入模式、目标表名大小写和批大小。
|
|
|
|
</Step>
|
|
<Step>
|
|
### 后台执行并检查结果
|
|
|
|
对话框关闭后任务继续运行。进度中心显示当前表、表序号、行数、耗时、失败表和取消状态。
|
|
|
|
</Step>
|
|
</Steps>
|
|
|
|
## 传输选项
|
|
|
|
| 选项 | 说明 |
|
|
| --- | --- |
|
|
| 创建目标表 | 目标表不存在时,根据源元数据和目标数据库能力生成表结构 |
|
|
| 追加 | 保留目标表已有数据并插入源数据 |
|
|
| 覆盖 | 在传输该表前清空目标表,再写入源数据 |
|
|
| 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 入口。
|
|
|
|
## 传输前检查
|
|
|
|
- 目标连接是否开启只读保护;只读目标会被直接阻止
|
|
- 源和目标账号是否分别具有读取、建表和写入权限
|
|
- 目标表名大小写转换后是否冲突
|
|
- 主键、唯一约束、外键、触发器和非空字段是否会拒绝数据
|
|
- 从生产环境复制到低环境前是否需要脱敏
|
|
- 大表是否更适合数据库原生导出、导入或在线迁移工具
|
|
|
|
## 相关功能
|
|
|
|
<Cards>
|
|
<Card title="表数据导入" href="/cn/docs/table-import">
|
|
从文件导入现有表,或按文件批量创建新表。
|
|
</Card>
|
|
<Card title="数据库导出" href="/cn/docs/database-export">
|
|
生成可审阅和离线传递的 SQL 文件。
|
|
</Card>
|
|
<Card title="生产环境安全" href="/cn/docs/production-safety">
|
|
了解只读保护、生产保护和权限边界。
|
|
</Card>
|
|
</Cards>
|