PostgreSQL 教程: 使用 DBeaver 迁移表数据

十月 29, 2023

摘要:DBeaver 中的数据迁移,提供了在不同数据库之间或同一数据库内的表之间传输数据的功能。本教程将引导您完成使用 DBeaver 执行数据迁移的步骤。

目录

步骤 1 定义数据源

要启动数据迁移,您需要选择数据源。请按照以下步骤操作:

  1. 导航至数据库导航器
  2. 选择一个或多个要导出的表。
  3. 右键单击打开上下文菜单。
  4. 从选项中选择导出数据

img

提示:您可以从自定义 SQL 查询导出数据。执行查询,然后从结果上下文菜单中选择导出数据

步骤 2 定义数据传输目标类型

选择数据源后,下一步是指定数据传输目的地的类型。选择数据库作为数据传输目标类型,然后按下一步

img

步骤 3 表映射

选择数据库作为传输目标类型后,下一步涉及映射数据。此过程包括指定选项、选择目标容器以及设置其他配置。配置数据映射设置,并按下一步继续下一步。

img

可用选项

按键:

图标 选项 描述
img 浏览 允许选择目标容器。
img 配置 打开附加设置。有关详细信息,请参阅配置部分。
img 预览数据 显示要传输的数据的预览。
img 向上 将选定的映射移至更靠近队列头部的位置。
img 向下 将选定的映射移至更靠近队列尾部的位置。
img 映射规则 选择传输数据时如何转换新表和列名。有关详细信息,请参阅映射规则部分。
img 自动赋值 根据来源自动填充目标列
img 选择… 指定数据将传输到的目标容器。

字段:

选项 描述
目标容器 定义数据传输的数据库或模式。有关更多详细信息,请参阅目标容器部分。
来源 显示所选表及其列的名称。
目标 显示目的表的名称。
映射 列出数据传输的可用操作。有关更多详细信息,请参阅映射部分。
转换 允许在数据传输期间转换列值。有关更多详细信息,请参阅转换部分。

目标容器和目标表

指定目标容器

选择… 按钮选择将要传输数据的容器。

定义目标表

img

您可以通过多种方式指定数据传输的目标表:

  • 手动输入:单击目标列中的单元格,然后手动输入要传输数据的表的名称。
  • 下拉列表:使用目标列旁边的下拉列表,在以下选项中进行选择:
    • 预先存在的表名称。
    • 跳过:跳过该表的数据传输。
    • 浏览:打开 选择目标表 窗口
  • 浏览按钮:或者,按浏览按钮,从目标容器中的现有表中选择一个表。

img

映射

要更改映射类型,请单击表映射对话框的映射列中的单元格,然后选择所需的映射类型。

img

动作 描述
创建 将源数据传输到目标容器中新创建的表或列。
跳过 不传输源数据。
已存在的 将源数据传输到目标容器中的现有表。
重新创建 重新创建表,这意味着现有表的可用数据、键、索引和其他可能的实体都会丢失。

提示:如果单元格标有 img,则表示目标表中不存在名称匹配的列,否则将自动填充名称。

转换列值

您可能还想在传输过程中转换某些列的值。为此,请通过单击转换列中的相应单元格来定义列转换器。您可以选择以下三个选项之一:

img

选项 描述
设置为 NULL 相应列中的所有值均设置为null
常量 将列值设置为常量值。
表达式 使用JEXL表达式计算列的值。

配置

单击配置按钮打开配置元数据结构窗口。此窗口允许您探索分布在以下选项卡中的其他设置:

列映射

通过导航到列映射,您可以探索源列和目标列之间的详细映射。

img

元素 描述
来源列 包含所选来源表中存在的列的名称。
来源类型 列出分配给所选来源表中的列的数据类型。
目标列 包含目标表中的列名称,来源列中的数据将传输到该目标表中。
目标类型 列出将分配给目标表中的列的数据类型。
映射 包含数据传输时应用于数据的动作列表。
转换 显示传输期间一个列中数据的转换方式。

重要:源数据库支持的数据类型在目标数据库中可能不受支持,反之亦然。要设置目标列的数据类型,请单击目标类型列中的单元格,然后从下拉列表中进行选择。

表属性

通过选择表属性选项卡,您可以修改目标表的属性,例如:

属性 描述
表空间 指定目标表的表空间。
分区方式 设置目标表的分区方式。
备注 允许您向目标表添加备注。

注意:这些设置的可用性可能会有所不同,具体取决于您使用的数据库和版本。

目标 DDL

通过选择目标 DDL 选项卡,您可以查看数据传输期间将执行的 SQL 脚本。

如果您要将数据导出到新表,或者重新创建现有表,该选项卡将显示必要的 SQL 语句。如果不是,DDL 选项卡将保持为空。

映射规则

单击映射规则按钮将打开一个窗口,其中提供了用于自定义数据传输期间如何转换新表和列名称的选项。

img

在该窗口中,可以进行以下设置:

选项 描述
名称大小写 设置表名和列名的字母大小写。选项包括默认大写小写
替换空格 确定如何处理表名和列名中的空格。选项有:不替换替换为下划线删除、转换为驼峰命名法
最大数据类型长度 设置数据类型的最大长度。
保存当前更改到全局设置 如果选中,则将当前映射规则保存到全局设置。否则,它们将保存在数据源设置级别。
全局设置 打开名称映射规则的全局设置窗口。或者转至窗口 -> 首选项 -> 连接 -> 数据传输,打开全局设置。

除了使用全局设置按钮之外,您还可以通过导航到窗口 -> 首选项 -> 连接 -> 数据传输,来访问这些设置。

重要:修改映射规则设置后,系统将提示您确认更改。修改映射规则可能会导致已更改的名称丢失。

键盘快捷键

支持以下键盘快捷键,以便在表映射选项卡的映射表区域中轻松导航:

快捷键 动作
向上 向上移动一行。
向下 向下移动一行。
右边 展开来源表列的列表。
左边 折叠来源表列的列表。
空格 自动分配目标。
删除 设置要跳过的映射类型。

步骤 4 提取设置

设置表映射后,下一步是定义如何从数据源中提取数据。提取设置选项卡提供了各种选项来优化此过程。配置这些设置以满足您的特定数据传输要求,然后按下一步

img

选项 描述
最大线程数 定义用于数据传输的线程数。
提取类型 对于较小的数据负载,选择单一查询。使用按分段进行较大的数据迁移。选择此选项后,您还可以设置段大小值。
打开新连接 如果选中,则会建立新连接,以确保数据传输不会影响其他数据库操作。
选择行数 启用进度条显示数据迁移状态。
抓取大小 指示每次服务器往返获取的行数,它会影响提取性能。

步骤 5 数据加载设置

img

配置提取设置后,您需要指定如何将数据加载到目标数据库中。数据加载设置选项卡提供了一系列选项来控制这部分过程。根据您的需要调整设置,然后按下一步

数据加载设置选项卡,定义如何将提取的数据推送到目标。可以使用以下选项。

选项 描述
传输自动生成的列 填充或跳过标有“自动生成”状态的列。一些数据库接受此类列中的值,而另一些数据库则会抛出语法错误。
加载前截断目标表 仅当您希望从目标表中清除所有数据时,才选择此复选框。使用此选项时要非常小心!
在传输期间禁用引用完整性检查 禁用目标表中的约束。此设置通过暂时禁用约束来防止数据库错误。但请注意,并非所有数据库都支持此功能。
替换方法 请阅读我们的数据导入和替换教程,了解有关替换方法选项的更多信息。
打开新连接 使用此选项可以加快数据传输速度。如果选定此选项,将打开一个新连接,并且数据传输不会干扰对目标数据库的其他调用。
使用事务 此选项允许您加快数据传输速度,并通过设置插入后提交参数来定义每个事务的行数。
行插入后提交 在插入一定数量的行后执行提交。此设置指定,在将指定数量的行插入表后应执行提交操作。
使用多行值插入 使用具有扩展值数的多行插入,以获得更高的性能。数据库特定设置。
在插入期间跳过绑定值 此选项可以跳过绑定值并直接设置它们,来显著提高某些驱动程序的性能,但它会带来 SQL 注入的安全风险。如果您不确定导入的文件内容,不建议这样做。
禁用批量操作 如果您想要禁用批量导入,请选中此复选框。导入将逐行进行。启用此功能将显示所有导入错误,但会使导入过程变慢。
忽略重复行错误 在导入过程中,如果数据库遇到目标表中导入行的键值重复,此类错误将被忽略,导入操作将继续进行而不会失败。
使用批量加载 绕过事务设置,并使用数据库提供的本机工具加载整个数据集。
完成后打开表编辑器 如果选择,则数据传输完成后将打开表编辑器。
显示完成消息 如果选择,传输完成后将显示一条通知消息。
通过电子邮件发送结果 完成后通过电子邮件发送数据传输结果。

步骤 6 确认

img

启动数据传输之前的最后一步是确认选项卡。此选项卡提供了前面步骤中设置的所有配置的摘要。它作为最后一次检查,以确保所有设置都正确。

下面是总结了配置选项的表:

选项 描述
来源容器 显示要从中提取数据的来源容器。
来源 显示容器内的特定来源。
目标容器 显示数据将推送到的目标容器。
目标 显示容器内的特定目标。
来源设置 总结从来源提取数据相关的设置。
目标设置 总结与加载到目标中的数据相关的设置。

这些设置是最终设置,现阶段已无法更改。如果所有配置均正确,请单击完成开始数据传输。

提示:您可以保存这些配置以供将来使用,并通过选择保存任务,创建与数据传输操作相关的任务。此选项将您的设置合并到一个可重用任务中。

单击继续后,数据传输过程将启动。

步骤 7 导出完成通知

如果没有错误,您将看到一个通知窗口,指示导出任务已成功完成。您可以在导出过程中继续使用数据库,因为它会在后台执行。