

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# DMS 結構描述轉換中的轉換規則
<a name="sc-transformation-rules"></a>

*轉換規則*可讓您自訂 DMS 結構描述轉換如何轉換資料庫物件，覆寫預設命名和資料類型映射。您可以將這些規則套用至資料庫、結構描述、資料表、檢視、資料欄、函數傳回值、例行參數和本機變數。

例如，假設您的來源結構描述中有一組名為 `test_TABLE_NAME` 的資料表。您可以設定在目標結構描述中將 `test_` 字首變更為 `demo_` 字首的規則。

您可以建立轉換規則來執行以下任務：
+ 新增、移除或取代字首
+ 新增、移除或取代字尾
+ 變更資料欄的資料類型、函數傳回值、常式參數或本機變數
+ 將物件名稱轉換為小寫或大寫
+ 重新命名物件

## 建立轉換規則
<a name="sc-transformation-rules-create"></a>

DMS 結構描述轉換會將轉換規則儲存為遷移專案的一部分。若要定義轉換規則，請在建立或修改遷移專案時，以包含具有`rules`陣列之物件的 JSON 字串傳遞轉換規則。陣列中的每個元素代表個別的規則物件。遷移專案最多支援 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`，請使用主控台或 CLI 中的 JSON AWS 編輯器。

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` 參數搭配下列其中一個命令：
+ [create-migration-project](https://docs.aws.amazon.com/cli/latest/reference/dms/create-migration-project.html) – 建立新的遷移專案時。
+ [modify-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 結構描述轉換遷移專案擷取轉換規則，請使用 [describe-migration-projects](https://docs.aws.amazon.com/cli/latest/reference/dms/describe-migration-projects.html) 命令。回應使用 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 更新轉換規則，請使用 [modify-migration-project](https://docs.aws.amazon.com/cli/latest/reference/dms/modify-migration-project.html) 命令搭配 `--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_tw/dms/latest/userguide/sc-transformation-rules.html)<br />尾碼操作：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/dms/latest/userguide/sc-transformation-rules.html)<br />案例轉換：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/dms/latest/userguide/sc-transformation-rules.html)<br />直接修改：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/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_tw/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_tw/dms/latest/userguide/sc-transformation-rules.html)<br />轉換規則中的所有物件名稱，例如資料表或資料欄名稱，都會區分大小寫。<br />下列各節說明每個物件欄位。<br />必要參數。 | 
| object-locator \| database-name | 遵循來源資料庫命名規則的英數字元值。 | 來源資料庫的名稱。<br />適用於資料庫架構源自資料庫的資料庫廠商，做為物件的最上層容器。例如：Microsoft 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_tw/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`。
+ 將字首`FACT_`新增至結構描述 `ORDERS`中的資料表`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>

下列範例會在從來源轉換為目標資料庫時執行這些動作：
+ 在結構描述 `NEW_`中`OLD_`將字首取代為 `OLD_INVENTORY`。
+ 在結構描述 `STG_WAREHOUSES`的資料表`INT_`中`STG_`將字首取代為 `OLD_INVENTORY`。
+ 在結構描述 的資料表 `TGT_` `SRC_WAREHOUSE_CODE`的 欄中`SRC_`，將字首取代`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`。
+ 將尾碼`_HIST`新增至結構描述 `JOB_CHANGES`中的資料表`HR_ARCHIVE`。
+ `_TS` 將尾碼新增至結構描述 `CREATED_AT`中資料表`EMPLOYEE_SALARIES`中的資料欄`HR_ARCHIVE`。

```
{
  "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` 從結構描述 `COUNTRY_CODE` 中的資料表 `CONTRACTS_V1` 中的資料欄移除尾碼`LEGAL_FILES`。

```
{
  "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>

下列範例會在從來源轉換到目標資料庫時執行這些動作：
+ 在結構描述 `_PROD`中`_DEV`將尾碼取代為 `REPORTING_DEV`。
+ 在結構描述 `MONTHLY_RPT`的資料表`_REPORT`中`_RPT`將尾碼取代為 `REPORTING_DEV`。
+ 將尾碼取代`_ID`為結構描述 `_KEY` 中資料表 `CUSTOMER_ID` 中資料欄中`MONTHLY_RPT`的 `REPORTING_DEV`。

```
{
  "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`轉換為大寫。
+ 將`FIRST_NAME`資料表中資料欄名稱中的所有字元`CUSTOMER_ACCOUNTS``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`轉換為小寫。
+ 將資料表中資料欄名稱`DESTINATION_CITY`中的所有字元`SHIPMENT_ORDERS``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`從 變更為 `NUMBER``DECIMAL`，精確度為 18，比例為 4。
+ 將結構描述`NOTES`中資料表`EMPLOYEES`中的資料欄資料類型`PAYROLL`從 `VARCHAR2`變更為 `VARCHAR`，長度為 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>

下列範例會在從來源轉換到目標資料庫時執行這些動作：
+ 將 `PROCESS_PAYMENT` 結構描述`P_AMOUNT`中預存程序中參數的資料類型`FINANCE`變更為 `NUMERIC`。
+ 將 `PROCESS_PAYMENT` 結構描述`V_TAX_RATE`中預存程序中本機變數的資料類型`FINANCE`變更為 `NUMERIC` ，精確度為 10，比例為 6。
+ 將結構描述`V_DESCRIPTION`中獨立函數`CALC_DISCOUNT`中本機變數的資料類型變更為長度`FINANCE`為 150 `CHARACTER`的 。

```
{
  "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`。
+ 將結構描述`TAX_UTILS`中套件`CALCULATE_TAX`內封裝函數的傳回資料類型`FNG_COMPANY`變更為 `REAL`。

```
{
  "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_`。
+ 在名稱開頭為 的所有結構描述的所有資料表`SRC_`中`_NEW`，將尾碼新增至名稱開頭為 的所有資料欄`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"
    }
  ]
}
```