

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

# 字元替換任務設定
<a name="CHAP_Tasks.CustomizingTasks.TaskSettings.CharacterSubstitution"></a>

您可以指定複寫任務針對具有 AWS DMS `STRING`或 `WSTRING`資料類型的所有來源資料庫資料欄，在目標資料庫上執行字元替換。如需使用任務組態檔案來設定任務設定的相關資訊，請參閱：[任務設定範例](CHAP_Tasks.CustomizingTasks.TaskSettings.md#CHAP_Tasks.CustomizingTasks.TaskSettings.Example)。

您可以使用來自下列來源和目標資料庫的端點，為任何任務設定字元替換：
+ 來源資料庫：
  + Oracle
  + Microsoft SQL Server
  + MySQL
  + MariaDB
  + PostgreSQL
  + SAP Adaptive Server Enterprise (ASE)
  + IBM Db2 LUW
+ 目標資料庫：
  + Oracle
  + Microsoft SQL Server
  + MySQL
  + MariaDB
  + PostgreSQL
  + SAP Adaptive Server Enterprise (ASE)
  + Amazon Redshift

您可以在任務設定中使用 `CharacterSetSettings` 參數來指定字元替換。這些字元替換會針對使用 Unicode 字碼指標值 (十六進位表示法) 指定的字元。如果同時指定兩者，您可以依下列順序實作兩階段替換：

1. **個別字元取代** – AWS DMS 可以將來源上所選字元的值取代為目標上對應字元的指定取代值。使用 `CharacterSetSettings` 中的 `CharacterReplacements` 陣列來選取具有您指定之 Unicode 字碼指標的所有來源字元。也使用此陣列來指定目標上對應字元的取代字碼指標。

   若要選取來源上具有指定程式碼指標的所有字元，請將 `CharacterReplacements` 陣列中的 `SourceCharacterCodePoint` 執行個體設定為該程式碼指標。然後，透過設定此陣列 `TargetCharacterCodePoint` 中對應的執行個體，指定所有同等目標字元的取代字碼指標。若要刪除目標字元而非取代它們，請將適當的 `TargetCharacterCodePoint` 執行個體設定為零 (0)。您可以透過在 `CharacterReplacements` 陣列中指定額外的 `SourceCharacterCodePoint` 和 `TargetCharacterCodePoint` 設定對，來取代或刪除任意數量的目標字元值。如果您為 `SourceCharacterCodePoint` 的多個執行個體指定相同的值，最後 `TargetCharacterCodePoint` 的對應設定的值會套用至目標。

   例如，假設您為 `CharacterReplacements` 指定下列值。

   ```
   "CharacterSetSettings": {
       "CharacterReplacements": [ {
           "SourceCharacterCodePoint": 62,
           "TargetCharacterCodePoint": 61
           }, {
           "SourceCharacterCodePoint": 42,
           "TargetCharacterCodePoint": 41
           }
       ]
   }
   ```

   在此範例中， 會將目標上具有來源碼點十六進位值 62 的所有字元 AWS DMS 取代為程式碼點值 61 的字元。此外，以代碼點值為 41 的字元 AWS DMS 取代目標上具有來源碼點 42 的所有字元。換言之， AWS DMS 會以字母 `'a'` 取代目標上字母 `'b'` 的所有執行個體。同樣地， 會以字母 AWS DMS 取代目標`'B'`上的字母所有執行個體`'A'`。

1. **字元集驗證和替換** – 完成任何個別字元替換後， AWS DMS 可以確保所有目標字元在您指定的單一字元集中都有有效的 Unicode 程式碼點。您可以在 `CharacterSetSettings` 中使用 `CharacterSetSupport` 來設定此目標字元驗證和修改。若要指定驗證字元集，請將 `CharacterSetSupport` 中的 `CharacterSet` 設為字元集的字串值。(`CharacterSet` 的可能值如下。) 您可以透過下列其中一種方式 AWS DMS 修改無效的目標字元：
   + 為所有無效目標字元指定單一替換 Unicode 字碼指標，無論其目前的字碼指標為何。若要設定此取代程式碼指標，請將 `CharacterSetSupport` 中的 `ReplaceWithCharacterCodePoint` 設為指定的值。
   + 將 `ReplaceWithCharacterCodePoint` 設為零 (0)，以設定刪除所有無效的目標字元。

   例如，假設您為 `CharacterSetSupport` 指定下列值。

   ```
   "CharacterSetSettings": {
       "CharacterSetSupport": {
           "CharacterSet": "UTF16_PlatformEndian",
           "ReplaceWithCharacterCodePoint": 0
       }
   }
   ```

   在此範例中， 會 AWS DMS 刪除在字元集中無效的目標上找到的任何`"UTF16_PlatformEndian"`字元。因此，它會刪除任何以十六進位值 `2FB6` 指定的字元。此值無效，因為這是 4 位元組 Unicode 字碼指標，而 UTF16 字元集僅接受具有 2 位元組字碼指標的字元。

**注意**  
複寫任務會先完成所有指定的字元替換，再啟動您透過資料表映射指定的任何全域或資料表層級轉換。如需資料表映射的詳細資訊，請參閱[使用資料表映射指定任務設定](CHAP_Tasks.CustomizingTasks.TableMapping.md)。  
字元替換不支援 LOB 資料類型。這包括 DMS 認為是 LOB 資料類型的任何資料類型。例如，在 Oracle 中的 `Extended` 資料類型被認為是 LOB。如需有關來源資料類型的詳細資訊，請參閱下列 [Oracle 的來源資料類型](CHAP_Source.Oracle.md#CHAP_Source.Oracle.DataTypes)：

 AWS DMS 支援 的值`CharacterSet`會顯示在下表中。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TaskSettings.CharacterSubstitution.html)