选择规则和操作 - AWS 数据库迁移服务

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

选择规则和操作

通过使用表映射,可通过选择规则和操作来指定要使用的表、视图和架构。对于使用选择规则类型的表映射规则,您可应用以下值。

参数 可能的值 描述
rule-type selection 一个选择规则。在指定表映射时定义至少一个选择规则。
rule-id 一个数字值。 一个用于标识规则的唯一数字值。如果您使用控制台创建规则,则控制台会为您创建此值。
rule-name 一个字母数字值。 一个用于标识规则的唯一名称。如果您使用控制台创建规则,则控制台会为您创建此值。
rule-action include, exclude, explicit 一个值,包括或排除规则所选定的对象。如果指定 explicit,则可以选择并仅包含一个对应于显式指定的表和架构的对象。
object-locator 一个带以下参数的对象:
  • schema-name – 架构的名称。

  • table-name – 表的名称。

  • (可选)table-typetable | view | all,用于指示 table-name 是仅引用表或视图,还是同时引用表和视图。默认值为 table

    AWS DMS 仅在满载任务中加载视图。如果您只有满载和更改数据捕获 (CDC) 任务,请至少配置一项 full-load-only 任务来加载视图。

    并非所有目标终端节点都接受视图作为复制源,即使在满负荷状态下也是如此(例如 Amazon S OpenSearch ervice)。检查目标端点的限制。

规则应用于的每个架构和表或视图的名称。您还可以指定某个规则只包含表、只包含视图还是同时包含表和视图。如果 rule-actionincludeexclude,您可以使用“%”百分比符号作为 schema-nametable-name 参数的值的全部或部分的通配符。有关可使用的其他通配符的信息,请参阅表映射中的通配符。因此,您可以匹配这些项目:

  • 单个架构中的单个表、视图或集合

  • 部分或所有架构中的单个表、视图或集合

  • 单个架构中的部分或所有表和视图,或单个数据库中的集合

  • 部分或所有架构中的部分或所有表和视图,或者部分或所有数据库中的集合

如果 rule-actionexplicit,则只能指定单个表或视图及其架构的确切名称(不带通配符)。

支持的视图的源包括:

  • Oracle

  • Microsoft SQL Server

  • PostgreSQL

  • IBM Db2 LUW

  • IBM Db2 z/OS

  • SAP Adaptive Server Enterprise(ASE)

  • MySQL

  • Aurora

  • Aurora Serverless

  • MariaDB

注意

AWS DMS 从不将源视图加载到目标视图。源视图加载到目标上等同的表,具有与源上视图的相同名称。

包含集合的数据库支持的源包括:

  • MongoDB

  • Amazon DocumentDB

load-order 一个正整数。最大值为 2147483647。 加载表和视图的优先级。首先加载具有较高值的表和视图。
filters 一个对象数组。 一个或多个用于筛选源的对象。您指定要在源中的单个列上筛选的对象参数。您指定要在多个列上筛选的多个对象。有关更多信息,请参阅 使用源筛选器
例 迁移架构中的所有表

以下示例将所有表从源中名为 Test 的架构中迁移到目标端点。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" } ] }
例 迁移架构中的一些表

以下示例将所有表(以 DMS 开头的表除外)从源中名为 Test 的架构中迁移到目标端点。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "selection", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "Test", "table-name": "DMS%" }, "rule-action": "exclude" } ] }
例 在单个架构中迁移指定的单个表

以下示例将源中 NewCust 架构中的 Customer 表迁移到目标端点。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "NewCust", "table-name": "Customer" }, "rule-action": "explicit" } ] }
注意

您可以通过指定多个选择规则在多个表和架构上显式选择。

例 按设定顺序迁移表

以下示例迁移两个表。表loadfirst(优先级为 1)在表loadsecond之前初始化。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "loadsecond" }, "rule-action": "include", "load-order": "1" }, { "rule-type": "selection", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "Test", "table-name": "loadfirst" }, "rule-action": "include", "load-order": "2" } ] }
注意

load-order 适用于表初始化。如果 MaxFullLoadSubTasks 大于 1,则连续表的加载不会等待上一个表的加载完成。

例 迁移架构中的部分视图

以下示例将部分视图从源中名为 Test 的架构迁移到目标中等同的表。

{ "rules": [ { "rule-type": "selection", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "Test", "table-name": "view_DMS%", "table-type": "view" }, "rule-action": "include" } ] }
例 迁移架构中的所有表和视图

以下示例将所有表和视图从源中名为 report 的架构迁移到目标中等同的表。

{ "rules": [ { "rule-type": "selection", "rule-id": "3", "rule-name": "3", "object-locator": { "schema-name": "report", "table-name": "%", "table-type": "all" }, "rule-action": "include" } ] }