

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

# DMS 架构转换中的转换规则
<a name="sc-transformation-rules"></a>

*转换规则*允许您自定义 DMS 架构转换如何转换数据库对象，覆盖默认命名和数据类型映射。您可以将这些规则应用于数据库、架构、表、视图、列、函数返回值、例程参数和局部变量。

例如，假定您的源架构中有一组名为 `test_TABLE_NAME` 的表。您可以设置一条规则，将前缀 `test_` 在目标架构中更改为前缀 `demo_`。

您可以创建执行以下任务的转换规则：
+ 添加、删除或替换前缀
+ 添加、删除或替换后缀
+ 更改列、函数返回值、例程参数或局部变量的数据类型
+ 将对象名称转换为小写或大写
+ 重命名对象

## 创建转换规则
<a name="sc-transformation-rules-create"></a>

DMS 架构转换将转换规则存储为迁移项目的一部分。要定义转换规则，请在创建或修改迁移项目时将其作为 JSON 字符串传递，该字符串包含带有`rules`数组的对象。数组中的每个元素代表一个单独的规则对象。一个迁移项目最多支持 512 条转换规则（最大 128 KB）。

带有转换规则的数组结构如下：

```
{
  "rules": [
    {
      {{Rule object 1}}
    },
    {
      {{Rule object 2}}
    },
    ...
    {
      {{Rule object N}}
    }
  ]
}
```

您可以在项目中添加多个转换规则。在转换过程中，DMS 架构转换应用转换规则的顺序与规则的添加顺序相同。

如果多个规则针对同一个对象，则行为取决于操作类型。具有不同操作类型的规则都会生效。例如，一条`add-prefix`规则和一条`add-suffix`规则都适用。具有相同操作类型的规则会相互覆盖，只有最后一个规则生效。

要创建转换规则，请使用以下方法之一。

------
#### [ AWS Management Console ]

**使用控制台创建转换规则**

1. 在**创建迁移项目**页面上，选择**添加转换规则**。有关更多信息，请参阅 [ 创建迁移项目](migration-projects-create.md)。

1. 对于**规则目标**，选择此规则适用的数据库对象的类型。控制台向导支持`schema``table`、和`column`目标。要使用其他目标，例如`database`或`view`，请使用控制台中的 JSON 编辑器或 AWS CLI。

1. 对于**源架构**，选择**输入架构**。然后，指定此规则适用的源架构、表和列。您可以使用确切的名称来选择一个对象，也可以使用带有百分号 (%) 的模式作为通配符来匹配任意数量的字符。

1. 对于**操作**，选择要执行的任务。

1. 根据规则操作，输入其他值：
   + `add-prefix`或 `add-suffix`-输入要添加的文本。
   + `remove-prefix`或 `remove-suffix`-输入要删除的文本。
   + `replace-prefix`或 `replace-suffix`-输入现有文本和替换文本。
   + `rename`— 输入对象的新名称。
   + `convert-uppercase`或 `convert-lowercase` — 无需其他值。
   + `change-data-type`— 输入目标数据类型名称以及精度、小数位数或长度（可选）。

1. 选择**添加转换规则**以添加其他转换规则。

   添加完规则后，选择**创建迁移项目**。

------
#### [ AWS CLI ]

要使用 AWS CLI 添加转换规则，请将`--transformation-rules`参数与以下命令之一一起使用：
+ [创建迁移项目 —](https://docs.aws.amazon.com/cli/latest/reference/dms/create-migration-project.html) 创建新的迁移项目时。
+ m@@ [odify-migration-project — 适用于现有的迁移项目](https://docs.aws.amazon.com/cli/latest/reference/dms/modify-migration-project.html)。

以下示例向现有迁移项目添加转换规则：

```
aws dms modify-migration-project \
  --migration-project-identifier {{migration_project_arn}} \
  --transformation-rules '{{json_rules}}'
```

例如，要在特定的 AWS 区域运行此命令，请添加`--region`参数`--region us-west-2`。

------

要编辑、复制或移除现有的转换规则，请参阅[编辑转换规则](#sc-transformation-rules-edit)。

## 检索转换规则
<a name="sc-transformation-rules-obtain"></a>

您可以使用 AWS 管理控制台或 AWS CLI 从现有 DMS 架构转换迁移项目中检索转换规则。

------
#### [ AWS Management Console ]

要使用 AWS 管理控制台查看转换规则，请在现有迁移项目上选择 “**修改**”，然后查看 “**转换规则” 部分中的现有规则**列表。

------
#### [ AWS CLI ]

要从现有 DMS 架构转换迁移项目中检索转换规则，请使用 desc [ribe](https://docs.aws.amazon.com/cli/latest/reference/dms/describe-migration-projects.html)-migration-projects 命令。响应使用 JSON 格式并包含与项目关联的转换规则。

以下 AWS CLI 示例从迁移项目中检索转换规则：

```
aws dms describe-migration-projects \
  --filters Name=migration-project-identifier,Values={{migration_project_arn}}
```

------

## 编辑转换规则
<a name="sc-transformation-rules-edit"></a>

要在迁移项目中编辑、添加或移除转换规则，请使用以下方法之一。

------
#### [ AWS Management Console ]

**编辑转换规则**

1. 选择**迁移项目**，然后选择您的迁移项目。

1. 选择 “**修改**” 以编辑您的迁移项目设置。

1. 对于**转换规则**，请选择下列操作之一：
   + 选择**添加转换规则**以添加新的转换规则。
   + 选择 “复制” 以**复制**现有的转换规则并将其添加到列表末尾。
   + 选择**删除**，以删除现有的转换规则。
   + 选择现有的转换规则进行编辑。

1. 完成编辑后，选择**保存更改**。

------
#### [ AWS CLI ]

要使用 AWS CLI 更新转换规则，请使用带参数的 m [odify-migration-projec](https://docs.aws.amazon.com/cli/latest/reference/dms/modify-migration-project.html) t 命令。`--transformation-rules`将完整更新的规则集作为 JSON 字符串传递。

```
aws dms modify-migration-project \
  --migration-project-identifier {{migration_project_arn}} \
  --transformation-rules '{{json_rules}}'
```

------

## 转换规则格式
<a name="sc-transformation-rules-format"></a>

转换规则使用 JSON 对象字段来定义如何将源对象转换为其等效目标对象。每种规则类型都使用一组特定的字段。仅包含适用于您的任务的字段。

以下 JSON 对象描述了 DMS 架构转换转换规则：

```
{
  "rule-type": "transformation",
  "rule-id": {{rule_id}},
  "rule-name": "{{rule_name}}",
  "rule-action": "{{rule_action}}",
  "rule-target": "{{rule_target}}",
  "object-locator": {
    [ "database-name": "{{database_name}}", ]
    [ "schema-name": "{{schema_name}}", ]
    [ "table-name": "{{table_name}}", ]
    [ "column-name": "{{column_name}}", ]
    [ "parent": "{{parent_name}}", ]
    [ "function-name": "{{function_name}}", ]
    [ "procedure-name": "{{procedure_name}}", ]
    [ "parameter-name": "{{parameter_name}}", ]
    [ "local-variable-name": "{{local_variable_name}}", ]
    [ "type": "{{source_data_type}}", ]
    [ "precision": {{source_precision}}, ]
    [ "scale": {{source_scale}}, ]
    [ "length": {{source_length}} ]
  },
  [ "value": "{{rule_value}}", ]
  [ "old-value": "{{rule_old_value}}", ]
  [ "data-type": {
    "type": "{{data_type_name}}",
    [ "precision": {{data_type_precision}}, ]
    [ "scale": {{data_type_scale}}, ]
    [ "length": {{data_type_length}} ]
  } ]
}
```

下表描述了每个参数。


| 参数 | 可能的值 | 说明 | 
| --- | --- | --- | 
| rule-type | transformation | 将规则应用于对象定位器指定的每个对象的值。<br />对于所有转换规则，请将其设置为`transformation`。<br />必需的参数。 | 
| rule-id | 一个数字（整数）值。 | 一个用于标识规则的唯一数字值。<br />必需的参数。 | 
| rule-name | 一个字母数字值。 | 一个用于标识规则的唯一名称。<br />必需的参数。 | 
| rule-action | add-prefix, remove-prefix, replace-prefix, add-suffix, remove-suffix, replace-suffix, convert-uppercase, convert-lowercase, rename, change-data-type | 要应用于对象的转换。所有转换规则操作都区分大小写。<br />前缀操作：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/sc-transformation-rules.html)<br />后缀操作：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/sc-transformation-rules.html)<br />大小写转换：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/sc-transformation-rules.html)<br />直接修改：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/sc-transformation-rules.html)<br />范围：可以对架构、表和列应用前缀、后缀、重命名和大小写转换操作。<br />该`change-data-type`操作仅适用于列、函数返回值、例程参数和局部变量。<br />必需的参数。 | 
| rule-target | database, schema, table, view, column, function result, routine parameter, local variable | 要应用规则的对象的类型。[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/sc-transformation-rules.html)<br />必需的参数。 | 
| object-locator | 一个 JSON 对象。 | 用于标识规则适用于哪些源数据库对象的对象。您可以将百分号 (`%`) 用作每个`object-locator`对象字段中全部或部分值的通配符。<br />该对象包含以下字符串字段：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/sc-transformation-rules.html)<br />转换规则中的所有对象名称（例如表名或列名）都区分大小写。<br />以下各节描述了每个对象字段。<br />必需的参数。 | 
| object-locator \| database-name | 遵循源数据库命名规则的字母数字值。 | 源数据库的名称。<br />适用于数据库供应商，其数据库架构源自作为对象顶级容器的数据库。例如：微软 SQL Server、SAP ASE。<br />可选的 JSON 对象字段。 | 
| object-locator \| schema-name | 遵循源数据库命名规则的字母数字值。 | 源数据库架构的名称。<br />可选的 JSON 对象字段。 | 
| object-locator \| table-name | 遵循源数据库命名规则的字母数字值。 | 源数据库表的名称。<br />可选的 JSON 对象字段。 | 
| object-locator \| column-name | 遵循源数据库命名规则的字母数字值。 | 源数据库表列的名称。<br />可选的 JSON 对象字段。 | 
| object-locator \| parent | 遵循源数据库命名规则的字母数字值。 | 源数据库对象的名称，该对象是指定对象的父对象，例如，表示`function-name`或`procedure-name`。<br />在某些供应商的数据库中，应用规则的对象可能是从属对象，需要指定其父对象。<br />例如，Oracle 中的封装函数，其中父函数是软件包名称。<br />可选的 JSON 对象字段。 | 
| object-locator \| function-name | 遵循源数据库命名规则的字母数字值。 | 源数据库函数的名称。<br />可选的 JSON 对象字段。 | 
| object-locator \| procedure-name | 遵循源数据库命名规则的字母数字值。 | 源数据库过程的名称。<br />可选的 JSON 对象字段。 | 
| object-locator \| parameter-name | 遵循源数据库命名规则的字母数字值。 | 源数据库函数或过程参数的名称。<br />可选的 JSON 对象字段。 | 
| object-locator \| local-variable-name | 遵循源数据库命名规则的字母数字值。 | 源数据库函数或过程中的局部变量的名称。<br />可选的 JSON 对象字段。 | 
| object-locator \| type | 一个字母数字值。 | 要匹配的源数据类型名称。使用此字段仅将规则应用于具有特定数据类型的对象。<br />可选的 JSON 对象字段。 | 
| object-locator \| precision | 一个数字（整数）值。 | 要匹配的源数据类型的精度。<br />可选的 JSON 对象字段。 | 
| object-locator \| scale | 一个数字（整数）值。 | 要匹配的源数据类型的比例。<br />可选的 JSON 对象字段。 | 
| object-locator \| length | 一个数字（整数）值。 | 要匹配的源数据类型的长度。<br />可选的 JSON 对象字段。 | 
| value | 遵循目标数据库命名规则的字母数字值。 | 变换操作使用的文本值。对于`add-prefix`和`add-suffix`，指定要添加的文本。对于`remove-prefix`和`remove-suffix`，指定要删除的文本。对于`replace-prefix`和`replace-suffix`，指定替换文本。对于`rename`，指定新名称。<br />除`convert-uppercase`、`convert-lowercase`和之外的所有操作均为必填项`change-data-type`。 | 
| old-value | 遵循源数据库命名规则的字母数字值。 | 要在对象名称中查找和替换的现有值。对于诸如`replace-prefix`和之类的操作是必需`replace-suffix`的。<br />可选参数。 | 
| data-type | 一个 JSON 对象。 | 描述替换数据类型属性的对象（何时`rule-action`是）`change-data-type`。<br /> 对象包含以下字段：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/sc-transformation-rules.html)<br />以下各节描述了每个对象字段。<br />可选参数。 | 
| data-type \| type | 一个字母数字值。 | 目标数据库列的替换数据类型的名称（如果`rule-action`是）`change-data-type`。必须是有效的目标数据库数据类型。<br />必填的 JSON 对象字段。 | 
| data-type \| precision | 一个数字（整数）值。 | 目标数据库的替换数据类型的精度（如果`rule-action`是）`change-data-type`。<br />可选的 JSON 对象字段。 | 
| data-type \| scale | 一个数字（整数）值。 | 目标数据库的替换数据类型的比例（如果`rule-action`是）`change-data-type`。<br />可选的 JSON 对象字段。 | 
| data-type \| length | 一个数字（整数）值。 | 目标数据库的替换数据类型的长度（如果`rule-action`是）`change-data-type`。<br />可选的 JSON 对象字段。 | 

## 转换规则示例
<a name="sc-transformation-rules-examples"></a>

以下示例显示了不同规则类型的`--transformation-rules`参数的 JSON 值：

### 添加前缀
<a name="sc-transformation-rules-examples-add-prefix"></a>

以下示例在从源数据库转换为目标数据库时执行这些操作：
+ 为架构`DW_`添加前缀`SALES`。
+ `ORDERS`在架构中`FACT_`为表添加前缀`SALES`。
+ 在架构中`OLD_`为表`UNIT_PRICE``PRODUCTS`中的列添加前缀`SALES`。

```
{
  "rules": [
    {
      "rule-id": 5,
      "rule-type": "transformation",
      "rule-name": "add-prefix-schema-sales",
      "rule-action": "add-prefix",
      "rule-target": "schema",
      "object-locator": {
        "schema-name": "SALES"
      },
      "value": "DW_"
    },
    {
      "rule-id": 12,
      "rule-type": "transformation",
      "rule-name": "add-prefix-table-orders",
      "rule-action": "add-prefix",
      "rule-target": "table",
      "object-locator": {
        "schema-name": "SALES",
        "table-name": "ORDERS"
      },
      "value": "FACT_"
    },
    {
      "rule-id": 27,
      "rule-type": "transformation",
      "rule-name": "add-prefix-column-unit-price",
      "rule-action": "add-prefix",
      "rule-target": "column",
      "object-locator": {
        "schema-name": "SALES",
        "table-name": "PRODUCTS",
        "column-name": "UNIT_PRICE"
      },
      "value": "OLD_"
    }
  ]
}
```

### 移除前缀
<a name="sc-transformation-rules-examples-remove-prefix"></a>

以下示例在从源数据库转换为目标数据库时执行这些操作：
+ `SRC_`从架构中移除前缀`SRC_FINANCE`。
+ `TMP_`从架构`TMP_INVOICES`中的表中删除前缀`SRC_FINANCE`。
+ `PAID_`从架构中表`PAID_AMOUNT``TMP_PAYMENTS`的列中删除前缀`SRC_FINANCE`。

```
{
  "rules": [
    {
      "rule-id": 3,
      "rule-type": "transformation",
      "rule-name": "remove-prefix-schema-src-finance",
      "rule-action": "remove-prefix",
      "rule-target": "schema",
      "object-locator": {
        "schema-name": "SRC_FINANCE"
      },
      "value": "SRC_"
    },
    {
      "rule-id": 18,
      "rule-type": "transformation",
      "rule-name": "remove-prefix-table-tmp-invoices",
      "rule-action": "remove-prefix",
      "rule-target": "table",
      "object-locator": {
        "schema-name": "SRC_FINANCE",
        "table-name": "TMP_INVOICES"
      },
      "value": "TMP_"
    },
    {
      "rule-id": 41,
      "rule-type": "transformation",
      "rule-name": "remove-prefix-column-paid-amount",
      "rule-action": "remove-prefix",
      "rule-target": "column",
      "object-locator": {
        "schema-name": "SRC_FINANCE",
        "table-name": "TMP_PAYMENTS",
        "column-name": "PAID_AMOUNT"
      },
      "value": "PAID_"
    }
  ]
}
```

### 替换前缀
<a name="sc-transformation-rules-examples-replace-prefix"></a>

以下示例在从源数据库转换为目标数据库时执行这些操作：
+ 将前缀`OLD_`替换为架构`NEW_`中的前缀`OLD_INVENTORY`。
+ 将架构`INT_`中的表中的前`STG_`缀替换`STG_WAREHOUSES`为表中的前缀`OLD_INVENTORY`。
+ 将前缀`SRC_`替`TGT_`换为架构`SRC_WAREHOUSE_CODE`中表`STG_WAREHOUSES`中的列`OLD_INVENTORY`。

```
{
  "rules": [
    {
      "rule-id": 7,
      "rule-type": "transformation",
      "rule-name": "replace-prefix-schema-old-inventory",
      "rule-action": "replace-prefix",
      "rule-target": "schema",
      "object-locator": {
        "schema-name": "OLD_INVENTORY"
      },
      "value": "NEW_",
      "old-value": "OLD_"
    },
    {
      "rule-id": 22,
      "rule-type": "transformation",
      "rule-name": "replace-prefix-table-stg-warehouses",
      "rule-action": "replace-prefix",
      "rule-target": "table",
      "object-locator": {
        "schema-name": "OLD_INVENTORY",
        "table-name": "STG_WAREHOUSES"
      },
      "value": "INT_",
      "old-value": "STG_"
    },
    {
      "rule-id": 35,
      "rule-type": "transformation",
      "rule-name": "replace-prefix-column-src-warehouse-code",
      "rule-action": "replace-prefix",
      "rule-target": "column",
      "object-locator": {
        "schema-name": "OLD_INVENTORY",
        "table-name": "STG_WAREHOUSES",
        "column-name": "SRC_WAREHOUSE_CODE"
      },
      "value": "TGT_",
      "old-value": "SRC_"
    }
  ]
}
```

### 添加后缀
<a name="sc-transformation-rules-examples-add-suffix"></a>

以下示例在从源数据库转换为目标数据库时执行这些操作：
+ 为架构`_HIST``HR_ARCHIVE`添加后缀。
+ `JOB_CHANGES`在架构`HR_ARCHIVE`中`_HIST`为表添加后缀。
+ 在架构`HR_ARCHIVE`中`_TS`为表`CREATED_AT``EMPLOYEE_SALARIES`中的列添加后缀。

```
{
  "rules": [
    {
      "rule-id": 9,
      "rule-type": "transformation",
      "rule-name": "add-suffix-schema-hr-archive",
      "rule-action": "add-suffix",
      "rule-target": "schema",
      "object-locator": {
        "schema-name": "HR_ARCHIVE"
      },
      "value": "_HIST"
    },
    {
      "rule-id": 16,
      "rule-type": "transformation",
      "rule-name": "add-suffix-table-job-changes",
      "rule-action": "add-suffix",
      "rule-target": "table",
      "object-locator": {
        "schema-name": "HR_ARCHIVE",
        "table-name": "JOB_CHANGES"
      },
      "value": "_HIST"
    },
    {
      "rule-id": 44,
      "rule-type": "transformation",
      "rule-name": "add-suffix-column-created-at",
      "rule-action": "add-suffix",
      "rule-target": "column",
      "object-locator": {
        "schema-name": "HR_ARCHIVE",
        "table-name": "EMPLOYEE_SALARIES",
        "column-name": "CREATED_AT"
      },
      "value": "_TS"
    }
  ]
}
```

### 删除后缀
<a name="sc-transformation-rules-examples-remove-suffix"></a>

以下示例在从源数据库转换为目标数据库时执行这些操作：
+ `_FILES`从架构`LEGAL_FILES`中删除后缀。
+ `_V1`从架构`CLAUSES_V1``LEGAL_FILES`中的表中删除后缀。
+ `_CODE`从架构`LEGAL_FILES`中表的列`COUNTRY_CODE`中删除后缀`CONTRACTS_V1`。

```
{
  "rules": [
    {
      "rule-id": 6,
      "rule-type": "transformation",
      "rule-name": "remove-suffix-schema-legal-files",
      "rule-action": "remove-suffix",
      "rule-target": "schema",
      "object-locator": {
        "schema-name": "LEGAL_FILES"
      },
      "value": "_FILES"
    },
    {
      "rule-id": 14,
      "rule-type": "transformation",
      "rule-name": "remove-suffix-table-clauses-v1",
      "rule-action": "remove-suffix",
      "rule-target": "table",
      "object-locator": {
        "schema-name": "LEGAL_FILES",
        "table-name": "CLAUSES_V1"
      },
      "value": "_V1"
    },
    {
      "rule-id": 31,
      "rule-type": "transformation",
      "rule-name": "remove-suffix-column-country-code",
      "rule-action": "remove-suffix",
      "rule-target": "column",
      "object-locator": {
        "schema-name": "LEGAL_FILES",
        "table-name": "CONTRACTS_V1",
        "column-name": "COUNTRY_CODE"
      },
      "value": "_CODE"
    }
  ]
}
```

### 替换后缀
<a name="sc-transformation-rules-examples-replace-suffix"></a>

以下示例在从源数据库转换为目标数据库时执行这些操作：
+ 将后缀替换`_DEV`为架构`_PROD``REPORTING_DEV`中。
+ 将后缀`_RPT`替换为架构`_REPORT``REPORTING_DEV`中的表`MONTHLY_RPT`中。
+ 将后缀`_ID`替换`_KEY`为架构`CUSTOMER_ID``REPORTING_DEV`中表`MONTHLY_RPT`中的列。

```
{
  "rules": [
    {
      "rule-id": 8,
      "rule-type": "transformation",
      "rule-name": "replace-suffix-schema-reporting-dev",
      "rule-action": "replace-suffix",
      "rule-target": "schema",
      "object-locator": {
        "schema-name": "REPORTING_DEV"
      },
      "value": "_PROD",
      "old-value": "_DEV"
    },
    {
      "rule-id": 23,
      "rule-type": "transformation",
      "rule-name": "replace-suffix-table-monthly-rpt",
      "rule-action": "replace-suffix",
      "rule-target": "table",
      "object-locator": {
        "schema-name": "REPORTING_DEV",
        "table-name": "MONTHLY_RPT"
      },
      "value": "_REPORT",
      "old-value": "_RPT"
    },
    {
      "rule-id": 47,
      "rule-type": "transformation",
      "rule-name": "replace-suffix-column-customer-id",
      "rule-action": "replace-suffix",
      "rule-target": "column",
      "object-locator": {
        "schema-name": "REPORTING_DEV",
        "table-name": "MONTHLY_RPT",
        "column-name": "CUSTOMER_ID"
      },
      "value": "_KEY",
      "old-value": "_ID"
    }
  ]
}
```

### 转换为大写形式
<a name="sc-transformation-rules-examples-uppercase"></a>

以下示例在从源数据库转换为目标数据库时执行这些操作：
+ 将架构名称中的所有字符`CRM_LEGACY`转换为大写。
+ 将架构中表`CUSTOMER_ACCOUNTS`名称中的所有字符`CRM_LEGACY`转换为大写。
+ 将架构中表`CUSTOMER_ACCOUNTS`中列名`FIRST_NAME`中的所有字符`CRM_LEGACY`转换为大写。

```
{
  "rules": [
    {
      "rule-id": 4,
      "rule-type": "transformation",
      "rule-name": "convert-uppercase-schema-crm-legacy",
      "rule-action": "convert-uppercase",
      "rule-target": "schema",
      "object-locator": {
        "schema-name": "CRM_LEGACY"
      }
    },
    {
      "rule-id": 19,
      "rule-type": "transformation",
      "rule-name": "convert-uppercase-table-customer-accounts",
      "rule-action": "convert-uppercase",
      "rule-target": "table",
      "object-locator": {
        "schema-name": "CRM_LEGACY",
        "table-name": "CUSTOMER_ACCOUNTS"
      }
    },
    {
      "rule-id": 36,
      "rule-type": "transformation",
      "rule-name": "convert-uppercase-column-first-name",
      "rule-action": "convert-uppercase",
      "rule-target": "column",
      "object-locator": {
        "schema-name": "CRM_LEGACY",
        "table-name": "CUSTOMER_ACCOUNTS",
        "column-name": "FIRST_NAME"
      }
    }
  ]
}
```

### 转换为小写形式
<a name="sc-transformation-rules-examples-lowercase"></a>

以下示例在从源数据库转换为目标数据库时执行这些操作：
+ 将架构名称中的所有字符`LOGISTICS`转换为小写。
+ 将架构中表`SHIPMENT_ORDERS`名称中的所有字符`LOGISTICS`转换为小写。
+ 将架构中表`SHIPMENT_ORDERS`中列名`DESTINATION_CITY`中的所有字符`LOGISTICS`转换为小写。

```
{
  "rules": [
    {
      "rule-id": 11,
      "rule-type": "transformation",
      "rule-name": "convert-lowercase-schema-logistics",
      "rule-action": "convert-lowercase",
      "rule-target": "schema",
      "object-locator": {
        "schema-name": "LOGISTICS"
      }
    },
    {
      "rule-id": 25,
      "rule-type": "transformation",
      "rule-name": "convert-lowercase-table-shipment-orders",
      "rule-action": "convert-lowercase",
      "rule-target": "table",
      "object-locator": {
        "schema-name": "LOGISTICS",
        "table-name": "SHIPMENT_ORDERS"
      }
    },
    {
      "rule-id": 52,
      "rule-type": "transformation",
      "rule-name": "convert-lowercase-column-destination-city",
      "rule-action": "convert-lowercase",
      "rule-target": "column",
      "object-locator": {
        "schema-name": "LOGISTICS",
        "table-name": "SHIPMENT_ORDERS",
        "column-name": "DESTINATION_CITY"
      }
    }
  ]
}
```

### 重命名
<a name="sc-transformation-rules-examples-rename"></a>

以下示例在从源数据库转换为目标数据库时执行这些操作：
+ 将架构重命名`TEST_SCHEMA`为`TEST_NEW_SCHEMA`。
+ 将架构`REGIONS`中的表重命名`HR`为`ORG_REGIONS`。
+ 将架构`CITY`中表`LOCATIONS`中的列重命名`HR`为`ORG_CITY_NAME`。

```
{
  "rules": [
    {
      "rule-id": 2,
      "rule-type": "transformation",
      "rule-name": "rename-schema-test-schema",
      "rule-action": "rename",
      "rule-target": "schema",
      "object-locator": {
        "schema-name": "TEST_SCHEMA"
      },
      "value": "TEST_NEW_SCHEMA"
    },
    {
      "rule-id": 15,
      "rule-type": "transformation",
      "rule-name": "rename-table-hr-regions",
      "rule-action": "rename",
      "rule-target": "table",
      "object-locator": {
        "schema-name": "HR",
        "table-name": "REGIONS"
      },
      "value": "ORG_REGIONS"
    },
    {
      "rule-id": 38,
      "rule-type": "transformation",
      "rule-name": "rename-column-hr-locations-city",
      "rule-action": "rename",
      "rule-target": "column",
      "object-locator": {
        "schema-name": "HR",
        "table-name": "LOCATIONS",
        "column-name": "CITY"
      },
      "value": "ORG_CITY_NAME"
    }
  ]
}
```

### 更改列数据类型
<a name="sc-transformation-rules-examples-change-data-type-columns"></a>

以下示例在从源数据库转换为目标数据库时执行这些操作：
+ 将架构`SALARY`中表`EMPLOYEES`中列的数据类型`PAYROLL`从更改为，精`DECIMAL`度`NUMBER`为 18，小数位数为 4。
+ 将架构`NOTES`中表`EMPLOYEES`中列的数据类型`PAYROLL`从更改为，长`VARCHAR`度`VARCHAR2`为 350。
+ 将架构`HIRE_DATE`中表`EMPLOYEES`中列的数据类型`PAYROLL`从更改`DATE`为，精`TIMESTAMP WITH TIME ZONE`度为 3。

```
{
  "rules": [
    {
      "rule-id": 10,
      "rule-type": "transformation",
      "rule-name": "change-datatype-column-salary",
      "rule-action": "change-data-type",
      "rule-target": "column",
      "object-locator": {
        "schema-name": "PAYROLL",
        "table-name": "EMPLOYEES",
        "column-name": "SALARY"
      },
      "data-type": {
        "type": "DECIMAL",
        "precision": 18,
        "scale": 4
      }
    },
    {
      "rule-id": 29,
      "rule-type": "transformation",
      "rule-name": "change-datatype-column-notes",
      "rule-action": "change-data-type",
      "rule-target": "column",
      "object-locator": {
        "schema-name": "PAYROLL",
        "table-name": "EMPLOYEES",
        "column-name": "NOTES"
      },
      "data-type": {
        "type": "VARCHAR",
        "length": 350
      }
    },
    {
      "rule-id": 56,
      "rule-type": "transformation",
      "rule-name": "change-datatype-column-hire-date",
      "rule-action": "change-data-type",
      "rule-target": "column",
      "object-locator": {
        "schema-name": "PAYROLL",
        "table-name": "EMPLOYEES",
        "column-name": "HIRE_DATE"
      },
      "data-type": {
        "type": "TIMESTAMP WITH TIME ZONE",
        "precision": 3
      }
    }
  ]
}
```

### 更改参数和变量数据类型
<a name="sc-transformation-rules-examples-change-data-type-params"></a>

以下示例在从源数据库转换为目标数据库时执行这些操作：
+ 将架构`P_AMOUNT`中存储过程`PROCESS_PAYMENT`中的参数的数据类型更改`FINANCE`为`NUMERIC`。
+ 将架构`V_TAX_RATE`中存储过程`PROCESS_PAYMENT`中的局部变量的数据类型更改`FINANCE`为`NUMERIC`精度 10 和小数位数 6。
+ 将架构`V_DESCRIPTION`中独立函数`CALC_DISCOUNT`中局部变量的数据类型更改`FINANCE`为长`CHARACTER`度为 150。

```
{
  "rules": [
    {
      "rule-id": 7,
      "rule-type": "transformation",
      "rule-name": "change-datatype-param-p-amount",
      "rule-action": "change-data-type",
      "rule-target": "routine parameter",
      "object-locator": {
        "schema-name": "FINANCE",
        "procedure-name": "PROCESS_PAYMENT",
        "parameter-name": "P_AMOUNT"
      },
      "data-type": {
        "type": "NUMERIC"
      }
    },
    {
      "rule-id": 21,
      "rule-type": "transformation",
      "rule-name": "change-datatype-localvar-v-tax-rate",
      "rule-action": "change-data-type",
      "rule-target": "local variable",
      "object-locator": {
        "schema-name": "FINANCE",
        "procedure-name": "PROCESS_PAYMENT",
        "local-variable-name": "V_TAX_RATE"
      },
      "data-type": {
        "type": "NUMERIC",
        "precision": 10,
        "scale": 6
      }
    },
    {
      "rule-id": 43,
      "rule-type": "transformation",
      "rule-name": "change-datatype-localvar-v-description",
      "rule-action": "change-data-type",
      "rule-target": "local variable",
      "object-locator": {
        "schema-name": "FINANCE",
        "function-name": "CALC_DISCOUNT",
        "local-variable-name": "V_DESCRIPTION"
      },
      "data-type": {
        "type": "CHARACTER",
        "length": 150
      }
    }
  ]
}
```

### 更改函数返回数据类型
<a name="sc-transformation-rules-examples-change-data-type-return"></a>

以下示例在从源数据库转换为目标数据库时执行这些操作：
+ 将架构`GET_PRODUCT_PRICE`中独立函数的返回数据类型更改`FNG_COMPANY`为`BIGINT`。
+ 将架构`CALC_DISCOUNTED_PRICE`中独立函数的返回数据类型更改`FNG_COMPANY`为`DECIMAL`。
+ 将架构中包`CALCULATE_TAX`内打包函数的返回数据类型更改`FNG_COMPANY`为`REAL`。`TAX_UTILS`

```
{
  "rules": [
    {
      "rule-id": 13,
      "rule-type": "transformation",
      "rule-name": "change-result-type-get-product-price",
      "rule-action": "change-data-type",
      "rule-target": "function result",
      "object-locator": {
        "schema-name": "FNG_COMPANY",
        "function-name": "GET_PRODUCT_PRICE"
      },
      "data-type": {
        "type": "BIGINT"
      }
    },
    {
      "rule-id": 28,
      "rule-type": "transformation",
      "rule-name": "change-result-calc-discounted-price",
      "rule-action": "change-data-type",
      "rule-target": "function result",
      "object-locator": {
        "schema-name": "FNG_COMPANY",
        "function-name": "CALC_DISCOUNTED_PRICE"
      },
      "data-type": {
        "type": "DECIMAL"
      }
    },
    {
      "rule-id": 61,
      "rule-type": "transformation",
      "rule-name": "change-result-type-calculate-tax",
      "rule-action": "change-data-type",
      "rule-target": "function result",
      "object-locator": {
        "schema-name": "FNG_COMPANY",
        "parent": "TAX_UTILS",
        "function-name": "CALCULATE_TAX"
      },
      "data-type": {
        "type": "REAL"
      }
    }
  ]
}
```

### 通配符模式
<a name="sc-transformation-rules-examples-wildcard"></a>

以下示例在从源数据库转换为目标数据库时执行这些操作：
+ 为名称`MIGR_`以开头的所有架构添加前缀。`STG_`
+ 为名称`MIGR_`以开头的所有架构中的所有表添加前缀。`STG_`
+ 在名称`_NEW`以开头的所有架构的所有表`SRC_`中，为名称以开头的所有列添加后缀。`STG_`

```
{
  "rules": [
    {
      "rule-id": 8,
      "rule-type": "transformation",
      "rule-name": "add-prefix-schemas-starting-with-stg",
      "rule-action": "add-prefix",
      "rule-target": "schema",
      "object-locator": {
        "schema-name": "STG_%"
      },
      "value": "MIGR_"
    },
    {
      "rule-id": 33,
      "rule-type": "transformation",
      "rule-name": "add-prefix-all-tables-in-stg-schemas",
      "rule-action": "add-prefix",
      "rule-target": "table",
      "object-locator": {
        "schema-name": "STG_%",
        "table-name": "%"
      },
      "value": "MIGR_"
    },
    {
      "rule-id": 57,
      "rule-type": "transformation",
      "rule-name": "add-suffix-columns-starting-with-src",
      "rule-action": "add-suffix",
      "rule-target": "column",
      "object-locator": {
        "schema-name": "STG_%",
        "table-name": "%",
        "column-name": "SRC_%"
      },
      "value": "_NEW"
    }
  ]
}
```