

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

# 选择规则和操作
<a name="CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Selections"></a>

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

**警告**  
请勿在这些规则中包含任何敏感数据。


| 参数 | 可能的值 | 说明 | 
| --- | --- | --- | 
| rule-type | selection | 一个选择规则。在指定表映射时定义至少一个选择规则。 | 
| rule-id | 一个数字值。 | 一个用于标识规则的唯一数字值。如果您使用控制台创建规则，则控制台会为您创建此值。 | 
| rule-name | 一个字母数字值。 | 一个用于标识规则的唯一名称。如果您使用控制台创建规则，则控制台会为您创建此值。 | 
| rule-action | include, exclude, explicit | 一个值，包括或排除规则所选定的对象。如果指定 explicit，则可以选择并仅包含一个对应于显式指定的表和架构的对象。 | 
| object-locator | 一个带以下参数的对象：[See the AWS documentation website for more details](http://docs.amazonaws.cn/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Selections.html) DMS 选择规则区分大小写。但是，选择结果还取决于源端点数据库的配置。如果将源端点配置为不区分大小写，则对象定位器值的大小写无关紧要。确保在不区分大小写的端点上的 DMS 选择规则中使用正确的对象标识符。  | 规则应用于的每个架构和表或视图的名称。您还可以指定某个规则只包含表、只包含视图还是同时包含表和视图。如果 `rule-action` 为 `include` 或 `exclude`，您可以使用“%”百分比符号作为 `schema-name` 和 `table-name` 参数的值的全部或部分的通配符。有关可使用的其他通配符的信息，请参阅[表映射中的通配符](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Wildcards.md)。因此，您可以匹配这些项目：[See the AWS documentation website for more details](http://docs.amazonaws.cn/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Selections.html)<br />如果 `rule-action` 为 `explicit`，则只能指定单个表或视图及其架构的确切名称（不带通配符）。<br />支持的视图的源包括：[See the AWS documentation website for more details](http://docs.amazonaws.cn/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Selections.html) Amazon DMS 从不将源视图加载到目标视图。源视图加载到目标上等同的表，具有与源上视图的相同名称。 <br />包含集合的数据库支持的源包括：[See the AWS documentation website for more details](http://docs.amazonaws.cn/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Selections.html) | 
| load-order | 一个正整数。最大值为 2147483647。 | 加载表和视图的优先级。首先加载具有较高值的表和视图。 | 
| filters | 一个对象数组。 | 一个或多个用于筛选源的对象。您指定要在源中的单个列上筛选的对象参数。您指定要在多个列上筛选的多个对象。有关更多信息，请参阅 [使用源筛选器](CHAP_Tasks.CustomizingTasks.Filters.md)。 | 

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

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            },
            "rule-action": "include"
        }
    ]
}
```

**Example 迁移架构中的一些表**  
以下示例将所有表（以 `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"
        }
    ]
}
```

**Example 在单个架构中迁移指定的单个表**  
以下示例将源中 `NewCust` 架构中的 `Customer` 表迁移到目标端点。  

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "NewCust",
                "table-name": "Customer"
            },
            "rule-action": "explicit"
        }
    ]
}
```
您可以通过指定多个选择规则在多个表和架构上显式选择。

**Example 按设定顺序迁移表**  
表和视图根据其加载顺序值进行迁移，较高的值在迁移序列中获得优先级。以下示例会迁移两个表，`loadfirst`（优先级值为 2）和 `loadsecond`（优先级值为 1），迁移任务将首先处理 `loadfirst` 表，然后再继续处理 `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，则连续表的加载不会等待上一个表的加载完成。

**Example 迁移架构中的部分视图**  
以下示例将部分视图从源中名为 `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"
        }
    ]
}
```

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

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