変換ルールおよび変換アクション - AWS Database Migration Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

変換ルールおよび変換アクション

選択したスキーマ、テーブルまたはビューに適用する変換を指定するには、変換アクションを使用します。変換ルールはオプションです。

注記

AWS DMSは、スキーマレベルまたはテーブルレベルごとに複数の変換ルールをサポートしていません。ただし、AWS DMSは、列レベルごとに複数の変換ルールをサポートします。

小文字への変換を含む列に対して複数のルールアクションを実行すると、一部の変換が正しく行われない場合があります。たとえば、以下のようなconvert-lowercaseおよびchange-data-typeルールのアクションを一緒に成功しない可能性があります。代わりに、convert-lowercaseルールアクションを個別に指定します。

変換ルールの列名では大文字と小文字が区別されます。たとえば、Oracle データベースのカラム名を大文字で指定する必要があります。

変換ルールタイプを使用するテーブルマッピングルールの場合、次の値を適用できます。

Parameter 使用できる値: 説明
rule-type transformation 選択ルールにより指定された各オブジェクトにルールを適用する値。特に明記されていない限り、transformation を使用します。
rule-id 数値。 ルールを識別する一意の数値。
rule-name 英数字値。 ルールを特定する一意な名前。
object-locator

以下のパラメータを使用するオブジェクト。

  • schema-name— スキーマの名前。MongoDB および Amazon DocumentDB エンドポイントの場合、これはコレクションのセットを保持するデータベースの名前です。

  • table-name— テーブル、ビュー、またはコレクションの名前です。

  • table-tablespace-name— 既存のテーブルのテーブルスペース名。

  • index-tablespace-name— 既存のインデックステーブルスペース名。

  • column-name— 既存の列の名前です。

  • data-type— 既存の列データ型の名前です。

ルールが適用される各スキーマ、テーブルまたはビュー、テーブルのテーブルスペース、インデックスのテーブルスペース、および列の名前。data-type を除く各 object-locator パラメータの値のすべてあるいは一部で、「%」パーセント記号をワイルドカードとして使用できます。したがって、これらの項目には以下を対応させることができます。

  • 単一のスキーマ内の単一のテーブルまたはビュー

  • 一部またはすべてのスキーマの単一のテーブルまたはビュー

  • 単一のスキーマの一部またはすべてのテーブルとビュー

  • 一部またはすべてのスキーマの一部またはすべてのテーブルとビュー

  • 指定したテーブル、ビュー、スキーマ内の 1 つ以上の列。

  • 複数の列が指定されている場合、指定された data-type を持つ列。data-type の指定可能な値については 、次の表で説明されている data-type を参照してください。

また、table-tablespace-name あるいは index-tablespace-name パラメータは、Oracle ソースのエンドポイントと一致させるためのみに使用できます。table-tablespace-name または index-tablespace-name を単一のルールで指定できますが、両方を指定することはできません。したがって、以下の項目のいずれかを一致させることができます。

  • 1 つ、一部、あるいはすべてのテーブルのテーブルスペース

  • 1 つ、一部、あるいはすべてのインデックスのテーブルスペース

rule-action

add-column, include-column, remove-column

rename

convert-lowercase, convert-uppercase

add-prefix, remove-prefix, replace-prefix

add-suffix, remove-suffix, replace-suffix

define-primary-key

change-data-type

add-before-image-columns

オブジェクトに適用する変換。すべて変換ルールアクションでは、大文字と小文字が区別されます。

rule-action パラメータの add-column 値は、テーブルに列を追加します。ただし、同じテーブルの既存の列と同じ名前の新しい列を追加することはできません。

data-type パラメータおよび expression パラメータとともに使用すると、add-column は新しい列データの値を指定します。

rule-actionchange-data-type の値は、column ルールターゲットに対してのみ使用できます。

-include-columnの値rule-actionパラメーターは、テーブルのモードをデフォルトですべての列を削除するおよび指定された列を含める。複数の列をターゲットに含めるには、include-columnルールで複数回指定します。

rule-target schema, table, column, table-tablespace, index-tablespace 変換するオブジェクトのタイプ。

table-tablespace および index-tablespace の値は、Oracle ターゲットエンドポイントでのみ使用できます。

object-locator: table-tablespace-name または index-tablespace-name 名の一部として指定するパラメータの値を指定してください。

value ターゲットタイプの名前付けルールに従った英数字値。 入力が必要なアクションの新しい値 (rename など)。
old-value ターゲットタイプの名前付けルールに従った英数字値。 置き換えが必要なアクションの古い値 (replace-prefix など)。
data-type

type— 使用するデータ型rule-actionadd-columnまたは、置換データ型rule-actionchange-data-type

または、rule-actionchange-data-typecolumn-name の値が "%"、かつ既存のデータ型を識別するための追加の data-type パラメータが object-locator に含まれる場合の置換データ型の名前。

AWS DMS は、次の DMS データ型の列データ型変換をサポートしています。"bytes", "date", "time", "datetime", "int1", "int2", "int4", "int8", "numeric", "real4", "real8", "string", "uint1", "uint2", "uint4", "uint8", "wstring", "blob", "nclob", "clob", "boolean", "set", "list" "map", "tuple"

precision— 追加された列または置換データ型に精度がある場合は、精度を指定する整数値。

length— 新しい列データの長さ (add-column)

次は、置換する既存のデータ型を指定する data-type パラメータの例です。この既存の data-type パラメータは、column-name の値が次に示す "%" である場合に object-locator に含まれます。

. . . "object-locator": { "schema-name": "dbo", "table-name": "dms", "column-name": "%", "data-type": "int2" }, "data-type": { "type": "int8" }

ここでは、int2 データ型を持つ列はすべて、int8 データ型に置き換えられます。

data-typelength 値は、add-column ルールアクションの column ルールターゲットでのみ使用できます。

expression SQLite 構文に続く英数字の値。

rule-actionrename-schema に設定して使用すると、expression パラメータは新しいスキーマを指定します。rule-actionrename-table に設定して使用すると、expression は新しいテーブルを指定します。rule-actionrename-column に設定して使用すると、expression は新しい列の値を指定します。

rule-actionadd-column に設定して使用すると、expression は新しい列を構成するデータを指定します。

変換ルールに式を使用する方法の詳細については、変換ルール式を使用した列の内容の定義

primary-key-def

以下のパラメータを使用するオブジェクト。

  • name— テーブルまたはビューの新しいプライマリキーまたは一意のインデックスの名前。

  • (オプション)origin— 定義する一意のキーのタイプ。primary-key(デフォルト) またはunique-index

  • columns— プライマリキーまたは一意のインデックスに表示される順番の列の名前をリストした文字列の配列です。

このパラメータでは、変換されたテーブルまたはビューの一意のキーの名前、タイプ、内容を定義できます。rule-actiondefine-primary-key に設定され、rule-targettable に設定されている場合にこの処理を行います。デフォルトでは、一意のキーはプライマリキーとして定義されます。
before-image-def

以下のパラメータを使用するオブジェクト。

  • column-prefix— 列名の前に付加される値です。デフォルト値は BI_ です。

  • column-suffix— 列名に付加される値です。デフォルトは空です。

  • column-filter— 次のいずれかの値が必要です。pk-onlyデフォルト値、non-lob(オプション) およびall(オプション)。

このパラメータは、前イメージ列を識別するための命名規則を定義し、ターゲット上に作成された前イメージ列を持つことができるソース列を識別するためのフィルターを指定します。rule-actionadd-before-image-columns に設定され、rule-targetcolumn に設定されている場合に、このパラメータを指定できます。

column-prefixcolumn-suffix の両方を空の文字列に設定しないでください。

[column-filter] では以下を選択します。

  • pk-onlyテーブルプライマリキーの一部である列のみを追加します。

  • non-lob— LOB タイプではない列のみを追加します。

  • all— 前イメージの値を持つ任意の列を追加します。

前イメージのサポートの詳細については、以下を参照してください。AWS DMSターゲットエンドポイントの詳細については、次を参照してください。

例 スキーマの名前変更

以下の例では、スキーマの名前をソースでの Test からターゲットでの Test1 に変更します。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "schema", "object-locator": { "schema-name": "Test" }, "value": "Test1" } ] }

例 テーブル名の変更

以下の例では、テーブルの名前をソースでの Actor からターゲットでの Actor1 に変更します。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table", "object-locator": { "schema-name": "Test", "table-name": "Actor" }, "value": "Actor1" } ] }

例 列名の変更

以下の例では、テーブル Actor の列の名前をソースでの first_name からターゲットでの fname に変更します。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "4", "rule-name": "4", "rule-action": "rename", "rule-target": "column", "object-locator": { "schema-name": "test", "table-name": "Actor", "column-name" : "first_name" }, "value": "fname" } ] }

例 Oracle テーブルのテーブルスペースの名前変更

次の例では、Oracle ソースの Actor という名前のテーブルの SetSpace という名前のテーブルのテーブルスペースを、Oracle のターゲットエンドポイントで SceneTblSpace に名前変更します。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Play", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table-tablespace", "object-locator": { "schema-name": "Play", "table-name": "Actor", "table-tablespace-name: "SetSpace" }, "value": "SceneTblSpace" } ] }

例 Oracle インデックスのテーブルスペースの名前変更

以下の例では、Oracle ソースの Actor という名前のテーブルの SetISpace という名前のインデックスのテーブルスペースを、Oracle のターゲットエンドポイントで SceneIdxSpace に名前変更します。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Play", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table-tablespace", "object-locator": { "schema-name": "Play", "table-name": "Actor", "table-tablespace-name: "SetISpace" }, "value": "SceneIdxSpace" } ] }

例 列の追加

次の例では、スキーマ test のテーブル Actordatetime 列を追加します。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "test", "table-name": "actor" }, "value": "last_updated", "data-type": { "type": "datetime", "precision": 6 } } ] }

例 列の削除

以下の例では、ソース内の Actor という名前のテーブルを変換し、先頭文字が col のすべての列をターゲットから削除します。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "remove-column", "rule-target": "column", "object-locator": { "schema-name": "test", "table-name": "Actor", "column-name": "col%" } }] }

例 Convert to lowercase

以下の例では、テーブルの名前をソースでの ACTOR からターゲットでの actor に変換します。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "convert-lowercase", "rule-target": "table", "object-locator": { "schema-name": "test", "table-name": "ACTOR" } }] }

例 大文字への変換

次の例では、すべてのテーブルおよびすべてのスキーマ内のすべての列を、ソースでの小文字からターゲットでの大文字に変換します。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "convert-uppercase", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%", "column-name": "%" } } ] }

例 プレフィックスの追加

以下の例では、ソース内のすべてのテーブルを変換し、ターゲットではそれらのテーブルにプレフィックス DMS_ を追加します。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-prefix", "rule-target": "table", "object-locator": { "schema-name": "test", "table-name": "%" }, "value": "DMS_" }] }

例 プレフィックスの置き換え

以下の例では、ソースでプレフィックス Pre_ を含むすべての列を変換し、ターゲットではプレフィックスを NewPre_ に置き換えます。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "replace-prefix", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%", "column-name": "%" }, "value": "NewPre_", "old-value": "Pre_" } ] }

例 サフィックスの削除

以下の例では、ソース内のすべてのテーブルを変換し、ターゲットではそれらのテーブルからサフィックス _DMS を削除します。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "remove-suffix", "rule-target": "table", "object-locator": { "schema-name": "test", "table-name": "%" }, "value": "_DMS" }] }

例 プライマリキーの定義

次の例では、ターゲットエンドポイントに移行した ITEM テーブルの 3 つの列の ITEM-primary-key という名前のプライマリキーを定義します。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "inventory", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "define-primary-key", "rule-target": "table", "object-locator": { "schema-name": "inventory", "table-name": "ITEM" }, "primary-key-def": { "name": ITEM-primary-key, "columns": [ "ITEM-NAME", "BOM-MODEL-NUM", "BOM-PART-NUM" ] } }] }

例 一意のインデックスの定義

次の例では、ターゲットエンドポイントに移行した ITEM テーブルの 3 つの列の ITEM-unique-idx という名前の一意のインデックスを定義します。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "inventory", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "define-primary-key", "rule-target": "table", "object-locator": { "schema-name": "inventory", "table-name": "ITEM" }, "primary-key-def": { "name": ITEM-unique-idx, "origin": unique-index, "columns": [ "ITEM-NAME", "BOM-MODEL-NUM", "BOM-PART-NUM" ] } }] }

例 ターゲット列のデータ型の変更

次の例では、SALE_AMOUNT という名前のターゲット列のデータ型を既存のデータ型から int8 に変更します。

{ "rule-type": "transformation", "rule-id": "1", "rule-name": "RuleName 1", "rule-action": "change-data-type", "rule-target": "column", "object-locator": { "schema-name": "dbo", "table-name": "dms", "column-name": "SALE_AMOUNT" }, "data-type": { "type": "int8" } }

例 前イメージ列の追加

emp_no という名前のソース列の場合、次の例の変換ルールによって、ターゲットに BI_emp_no という名前の新しい列が追加されます。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "employees" }, "rule-action": "add-before-image-columns", "before-image-def": { "column-prefix": "BI_", "column-suffix": "", "column-filter": "pk-only" } } ] }

ここでは、次の文はBI_emp_no列を 1 に設定します。

UPDATE employees SET emp_no = 3 WHERE emp_no = 1;

サポートされている AWS DMS ターゲットに CDC 更新を書き込むと、emp_no 列内の値が更新された行は BI_emp_no 列からわかります。