AWS Database Migration Service
ユーザーガイド (Version API Version 2016-01-01)

テーブルマッピングを使用して、タスクの設定を指定する

テーブルマッピングは、データソース、ソーススキーマ、データ、そしてタスク実行中に必要なすべての変換を指定するための複数のルールタイプを使用します。テーブルマッピングを使用して、データベースで移行する個々のテーブルや、移行に使用するスキーマを指定できます。また、フィルタを使用して、レプリケートする特定のテーブルの列からデータを指定できます。変換を使用して、ターゲットデータベースに書き込むデータを変更できます。

コンソールからのテーブルマッピングによりテーブル選択および変換を指定する

AWS マネジメントコンソール コンソールを使用して、テーブルの選択、変換の指定などのテーブルマッピングを実施できます。コンソールで、[Where (場所)] セクションを使用してスキーマ、テーブル、およびアクションを含めるか除外するかを指定できます。[フィルタ] セクションを使用して、レプリケーションタスクに適用する、テーブルの列の名前と条件を指定します。これら 2 つのアクションを合わせて、選択ルールを作成します。

選択ルールを 1 つ以上指定した後に、変換をテーブルマッピングに含めることができます。変換を使用して、スキーマまたはテーブルの名前を変更したり、スキーマまたはテーブルにプレフィックスやサフィックスを追加したり、テーブルの列を削除したりできます。

以下の例は、「EntertainmentAgencySample」というスキーマの「Customers」テーブルの選択ルールを設定する方法を示しています。選択ルールと変換は、[Guided (ガイド)] タブで作成します。このタブは、スキーマとテーブル情報があるソースエンドポイントを選択した場合のみ表示されます。

テーブルの選択を指定するには、AWS コンソールを使用して、条件と変換でフィルタリングします。

  1. AWS マネジメントコンソール にサインインして AWS DMS を選択します。AWS Identity and Access Management (IAM) ユーザーとしてサインインしている場合、AWS DMS にアクセスするには適切なアクセス許可が必要です。必要なアクセス権限の詳細については、「AWS DMS を使用するのに必要な IAM アクセス許可」を参照してください。

  2. [ダッシュボード] ページで、[タスク] を選択します。

  3. [タスクの作成] を選択します。

  4. [タスク名]、[レプリケーションインスタンス]、[ソースエンドポイント]、[ターゲットエンドポイント]、[移行タイプ] などのタスク情報を入力します。[テーブルマッピング] セクションから [Guided (ガイド)] を選択します。

    
                                スキーマとテーブルの選択
  5. [テーブルマッピング] セクションで、スキーマ名とテーブル名を選択します。テーブル名を指定するとき、「%」をワイルドカード値として使用できます。フィルタを使用して、定義されたデータを含める、除外するかなど、実行するアクションを指定します。

    
                                スキーマとテーブルの選択
  6. [Add column filter (列フィルタの追加)] および [条件の追加] リンクを使用して、フィルタ情報を指定します。

    1. まず、[Add column filter (列フィルタの追加)] を選択して列と条件を指定します。

    2. [追加] を選択してその他の条件を追加します。

    以下の例は、01 から 85 の間に AgencyIDs を含む Customers テーブルのフィルタを示しています。

    
                                スキーマとテーブルの選択
  7. 希望の選択を作成したら、[Add selection rule (選択ルールの追加)] を選択します。

  8. 選択ルールを 1 つ以上作成したら、タスクに変換を追加できます。[add transformation rule (変換ルールの追加)] を選択します。

    
                                変換ルール
  9. 変換を希望するターゲットを選択し、必要な追加情報を入力します。以下の例は、Customer テーブルから AgencyStatus 列を削除する変換を示しています。

    
                                変換ルール
  10. [Add transformation rule] を選択します。

  11. (オプション) [add selection rule (選択ルールの追加)] または [add transformation rule (変換ルールの追加)] を選択して、他の選択ルールや変換ルールを追加します。完了したら、[Create task] を選択します。

    
                                変換ルール

JSON を使用するテーブルマッピングによりテーブル選択および変換を指定する

JSON 形式でテーブルマッピングを作成できます。AWS DMS マネジメントコンソールを使用して移行タスクを作成する場合、JSON を直接テーブルマッピングボックスに入力できます。CLI または API を使用して移行を実行する場合、JSON ファイルを作成して移行中に適用するテーブルマッピングを指定できます。

使用するテーブルやスキーマを指定し、スキーマおよびテーブル変換を実行することができます。selection ルールタイプと transformation ルールタイプを使用してテーブルマッピングルールを作成します。

注記

また、Amazon S3 では、post-processing ルールタイプおよび add-tag ルールアクションを使用して、選択したテーブルとスキーマに S3 オブジェクトにマッピングされたタグ付けを行うことができます。詳細については、「Amazon S3 オブジェクトのタグ付け」を参照してください。

選択ルールと選択アクション

テーブルマッピングを使用すると、選択ルールと選択アクションを使用することで、使用するテーブルやスキーマを指定できます。選択ルールタイプを使用するテーブルマッピングルールの場合、以下の値を適用できます。

パラメータ 使用できる値 説明
rule-type selection テーブルマッピングを指定するときは、少なくとも 1 つの選択ルールを定義します。
rule-id 数値。 ルールを識別する一意の数値。
rule-name 英数字値。 ルールを特定する一意な名前。
rule-action includeexcludeexplicit ルールにより選択される 1 つ以上のオブジェクトを含めるか除外します。explicit を指定した場合、明示的に指定したテーブルおよびスキーマに該当する 1 つだけのオブジェクトを選択して含めることができます。
object-locator 以下のパラメータを使用するオブジェクト。
  • schema-name – スキーマの名前。

  • table-name – テーブルの名前。

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

  • 単一のスキーマの 1 つのテーブル

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

  • 単一のスキーマの一部あるいはすべてのテーブル

  • 一部あるいはすべてのスキーマの一部あるいはすべてのテーブル

rule-actionexplicit の場合、1 つのテーブルとスキーマ (ワイルドカードなし) の正確な生名前のみを指定できます。

load-order 正の整数。最大の値は 2147483647 です。 テーブルを読み込むための優先度を示します。値が大きいテーブルが最初に読み込まれます。
filters オブジェクトの配列。 ソースをフィルタリングする 1 つ以上のオブジェクト。ソースの単一の列でフィルタリングするオブジェクトパラメータを指定します。複数の列をフィルタリングする複数のオブジェクトを指定します。詳細については、「ソースフィルタの使用」を参照してください。

例 スキーマ内のすべてのテーブルの移行

以下の例では、ソース内の Test という名前のスキーマからすべてのテーブルをターゲットエンドポイントに移行します。

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

例 スキーマの一部のテーブルの移行

以下の例では、ソース内の Test という名前のスキーマから、先頭が DMS のテーブルを除くすべてのテーブルをターゲットエンドポイントに移行します。

{ "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" } ] }

例 単一のスキーマで指定した単一のテーブルの移行

以下の例では、ソース内の NewCust スキーマから Customer テーブルをターゲットエンドポイントに移行します。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "NewCust", "table-name": "Customer" }, "rule-action": "explicit" } ] }

注記

複数の選択ルールを指定することで、複数のテーブルとスキーマを明示的に選択できます。

例 設定順でテーブルを移行

以下の例は、2 つのテーブルを移行します。テーブル loadfirst (優先度 2) はテーブル loadsecond より前に移行されます。

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "loadfirst" }, "rule-action": "include", "load-order": "2" }, { "rule-type": "selection", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "Test", "table-name": "loadsecond" }, "rule-action": "include", "load-order": "1" } ] }

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

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

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

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

  • table-name – テーブルの名前。

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

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

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

  • 単一のスキーマの 1 つのテーブル

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

  • 単一のスキーマの一部あるいはすべてのテーブル

  • 一部あるいはすべてのスキーマの一部あるいはすべてのテーブル

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

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

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

rule-action
  • rename

  • remove-column

  • convert-lowercaseconvert-uppercase

  • add-prefixremove-prefixreplace-prefix

  • add-suffixremove-suffixreplace-suffix

  • define-primary-key

オブジェクトに適用する変換。すべて変換ルールアクションでは、大文字と小文字が区別されます。
rule-target schematablecolumntable-tablespaceindex-tablespace 変換するオブジェクトのタイプ。

table-tablespace あるいは index-tablespace 値は、Oracle のターゲットエンドポイントでのみ使用できます。また、object-locator の一部として指定した該当するパラメータと一致する値を指定できます (table-tablespace-name あるいは index-tablespace-name)。

value ターゲットタイプの名前付けルールに従った英数字値。 入力が必要なアクションの新しい値 (rename など)。
old-value ターゲットタイプの名前付けルールに従った英数字値。 置き換えが必要なアクションの古い値 (replace-prefix など)。
primary-key-def 以下のパラメータを使用するオブジェクト。
  • name – テーブルの新しいプライマリキーまたは一意のインデックスの名前。

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

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

ルールアクションを define-primary-key、ルールターゲットを table に設定して、このパラメータは変換されたテーブルの名前、タイプ、および一意のキーの内容を定義します。デフォルトでは、一意のキーはプライマリキーとして定義されます。

例 スキーマの名前変更

以下の例では、スキーマの名前をソースでの 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" } ] }

例 列の削除

以下の例では、ソース内の 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%" } }] }

例 小文字への変換

以下の例では、テーブルの名前をソースでの 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" ] } }] }

テーブル設定のルールとオペレーション

テーブル設定を使用して、指定されたオペレーションで選択されたテーブルに適用する設定を指定します。テーブル設定ルールはオプションです。

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

パラメータ 使用できる値 説明
rule-type table-settings 選択ルールにより指定されたテーブルにルールを適用する値。
rule-id 数値。 ルールを識別する一意の数値。
rule-name 英数字値。 ルールを特定する一意な名前。
object-locator 以下のパラメータを使用するオブジェクト。
  • schema-name – スキーマの名前。

  • table-name – テーブルの名前。

特定のスキーマとテーブルの名前 (ワイルドカードは使用できません)。

parallel-load 以下のパラメータを使用するオブジェクト。
  • type – 並列ロードが有効かどうか、およびテーブルパーティション、サブパーティション、または並行してロードされる他のセグメントを識別するために使用するメカニズムを指定します。パーティションとサブパーティション (Oracle エンドポイントのみ) は、ソーステーブルで定義済みであり名前で識別されているセグメントです。その他のセグメントは、1 つ以上のテーブル列の値の範囲で境界を指定することで table-settings ルール内で識別できます。

  • partitionstypepartitions-list の場合、並列でロードされるすべてのパーティションを指定します。

  • subpartitions – (Oracle エンドポイントのみ) typepartitions-list の場合、並列でロードされるすべてのサブパーティションを指定します。

  • columnstyperanges の場合、並列でロードされる範囲ベースのセグメントを識別するために使用する列を指定します。

  • boundariestyperanges の場合、並列でロードされる範囲ベースのセグメントを識別するために使用する columns の値を指定します。

object-locator オプションで識別されたテーブルでの並列ロード (マルチスレッド) オペレーションを指定します。テーブルは、使用可能なすべてのパーティションまたはサブパーティション、選択されたパーティションまたはサブパーティション、または指定された範囲ベースのセグメントで指定されたセグメントに応じて、並列でロードできます。詳細については、「選択したテーブルで並列ロードを使用する」を参照してください。
type parallel-load の次のいずれか。
  • partitions-auto – テーブルのすべてのパーティションが並列でロードされます。各パーティションは個別のスレッドに割り当てられます。

  • subpartitions-auto – (Oracle エンドポイントのみ) テーブルのすべてのサブパーティションが並列でロードされます。すべてのサブパーティションは個別のスレッドに割り当てられます。

  • partitions-list – テーブルの指定されたすべてのパーティションとサブパーティションが並列でロードされます。指定された各パーティションおよびサブパーティション (Oracle エンドポイントのみ) は、個別のスレッドに割り当てられます。並行してロードするパーティションおよびサブパーティションは、指定された partitions (パーティション名) および subpartitions (サブパーティション名) で識別します。

  • ranges – テーブルの指定されたすべてのセグメントが並列でロードされます。識別した各テーブルセグメントは個別のスレッドに割り当てられます。これらのセグメントは、指定した columns (列名) および boundaries (列の値) で識別します。

  • none – テーブルは、パーティションやサブパーティションに関係なく、シングルスレッドタスクでロードされます (デフォルト)。詳細については、「タスクの作成」を参照してください。

並列でロードするテーブルパーティション、サブパーティション、またはセグメントを識別するメカニズムを指定します。
partitions typepartitions-list の場合、これは並列でロードされるパーティションの名前を指定する文字列の配列です。 並列でロードされるパーティションの名前を指定します。
subpartitions (Oracle エンドポイントのみ) typepartitions-list の場合、これは並列でロードされるサブパーティションの名前を指定する文字列の配列です。 並列でロードされるサブパーティションの名前を指定します。
columns typeranges の場合、並列でロードされる範囲ベースのテーブルセグメントを識別するために使用される列の名前に設定された文字列の配列です。 並列でロードする範囲ベースのテーブルセグメントを識別するために使用する列の名前を指定します。
boundaries typeranges の場合、列の値の配列の配列。隠れ土の配列には、数量の列値と columns で指定された順序が含まれています。列の値の配列はテーブルセグメントの上限の境界を指定します。各追加列値の配列は、1 つの追加テーブルセグメントの上限の境界を追加します。このような範囲ベースのテーブルセグメントはすべて並列にロードされます。 並列でロードする範囲ベースのテーブルパーティションを好き別するために使用する列の値を指定します。
lob-settings 以下のパラメータを使用するオブジェクト。
  • mode – LOB データ項目 (LOB) の移行処理モードを指定します。

  • bulk-max-sizemode 設定に応じて、LOB データ項目の最大サイズを指定します。

object-locator オプションによって識別されるテーブルの LOB 処理を指定して、単一テーブルのタスク LOB 設定を上書きします。LOB 設定パラメータの使用に関する詳細については、「選択したテーブルの LOB の設定」を参照してください。
mode 以下の値を使用して、選択されたテーブルの LOB の一般的な移行処理を指定します。
  • limited – (デフォルト) レプリケートするほとんどの LOBが小さい (例: 100 MB 以下) 場合に指定します。また、bulk-max-size 値を指定します (ゼロは無効)。この値よりサイズが大きい LOB はすべて、設定されたサイズに切り捨てられます。このモードでは、LOB は 制限付き LOB モードで移行されます。つまり、テーブルの他のすべての列データ型とともにインラインで移行されます。

  • unlimited – レプリケートするすべてまたはほとんどの LOB が大きい (例: 1 GB 超) 場合に指定します。bulk-max-size 値を 0 に指定すると、すべての LOB が標準の完全 LOB モードで移行されます。つまり、すべての LOB がソーステーブルから参照を使用してサイズに関係なく他の列データ型とは個別に移行されます。0 より大きい bulk-max-size 値を指定した場合、このサイズよりも大きい LOB はソーステーブルの参照を使用して移行されます。これは標準の完全 LOB モードの参照と似ています。それ以外の場合は、このサイズ以下の LOB はインラインで移行されます。これは制限付き LOB モードに似ています。unlimited モードでは、bulk-max-size に設定された値にかかわらず、LOB は切り捨てられないことに注意してください。

  • none – すべてのテーブルの LOB はタスクの LOB 設定に従って移行されます。タスクの LOB 設定の詳細については、「ターゲットメタデータのタスク設定」を参照してください。LOB を移行する方法およびこれらのタスクの LOB 設定を指定する方法については、「AWS DMS タスクのソースデータベースの LOB サポートの設定」を参照してください。その後、選択されたテーブルで異なる移行アプローチを指定するかどうかを決定することもできます。

LOB を移行するために使用されるメカニズムを指定します。
bulk-max-size LOB の最大サイズをキロバイト単位で指定します。この値の効果は mode によって異なります。 このオプションは、小さな LOB をレプリケートする必要がある場合、またはターゲットエンドポイントが無制限の LOB サイズをサポートしていない場合にのみ指定します。

選択したテーブルで並列ロードを使用する

AWS DMS は全ロードタスクを論理的にスレッドに分割して、複数のスレッドを並列で使用してセグメント化された単一のテーブルを移行できます。各セグメントは個別のスレッドに割り当てられます。この並列ロードプロセスを使用すると、複数のスレッドを使用して複数のテーブルをソースエンドポイントから並列でアンロードし、その後複数のスレッドを使用して同じテーブルをターゲットエンドポイントに並列に移行しロードすることができます。一部のデータベースエンジンでは、既存のパーティションまたはサブパーティションでテーブルをセグメント化できます。それ以外の場合は、列の値の範囲を指定することで任意のテーブルをセグメント化できます。

並列ロードは以下のソースエンドポイントでサポートされています。

  • Oracle

  • Microsoft SQL Server

  • MySQL

  • PostgreSQL

  • IBM Db2

  • SAP Adaptive Server Enterprise (ASE)

並列ロードは以下のターゲットエンドポイントでサポートされています。

  • Oracle

  • Microsoft SQL Server

  • MySQL

  • PostgreSQL

  • Amazon Redshift

  • SAP Adaptive Server Enterprise (ASE)

注記

並列ロードのタスクで使用できるスレッド数とバッファサイズは、ParallelLoadThreads および ParallelLoadBufferSize タスク設定をそれぞれ使用して指定できます。これらの設定は、エンドポイントによって異なる場合があります。詳細については、「ターゲットメタデータのタスク設定」を参照してください。

並列ロードを使用するには、parallel-load オプションを指定した table-settings タイプのテーブルマッピングルールを作成します。table-settings ルール内で、並列でロードする単一テーブルのセグメント化の条件を指定できます。このセグメント化の条件を指定するには、parallel-load オプションの type パラメータに、並列ロード用にテーブルをセグメント化する方法に応じて、複数のオプションのいずれかを設定します。

  • パーティション単位 – partitions-auto タイプを使用して既存のすべてのテーブルパーティションをロードできます。または、partitions-list タイプで partitions 配列を指定して選択したパーティションのみをロードすることもできます。

  • (Oracle エンドポイントのみ) サブパーティション単位 – subpartitions-auto を使用して既存のテーブルのサブパーティションをすべてロードできます。または、partitions-list タイプを使用し subpartitions 配列を指定することで選択したサブパーティションのみをロードすることもできます。

  • 列と値の境界を使用して定義したセグメント単位 – ranges タイプで columns および boundaries 配列を指定して定義したテーブルセグメントをロードできます。

その後、追加の table-settings オブジェクトをその関連する parallel-load オプションとともに指定して、並列でロードする追加のテーブルを識別できます。

次の手順では、各並列ロードタイプの JSON を記述する方法を、単純なものからきわめて複雑なものまで説明します。

すべてのテーブルのパーティションまたはテーブルのサブパーティションを指定するには

  • partitions-auto タイプまたは subpartitions-auto タイプのいずれか (両方は使用できません) を指定して parallel-load を指定します。

    各テーブルのパーティションまたはサブパーティションは、個別のスレッドに自動的に割り当てられます。

    注記

    パーティションまたはサブパーティションは、既にテーブルで定義されている場合にのみ並列ロードに含まれます。

選択したテーブルパーティション、サブパーティション、またはその両方を指定するには

  1. partitions-list タイプで parallel-load を指定します。

  2. パーティションを含める場合は、パーティション名の配列を partitions の値として指定します。

    指定されたパーティションがそれぞれ独自のスレッドに割り当てられます。

  3. サブパーティションを含める場合 (Oracle エンドポイントのみ) は、subpartitions の値としてサブパーティション名の配列を指定します。

    指定されたサブパーティションがそれぞれ独自のスレッドに割り当てられます。

    注記

    パーティションおよびサブパーティションは、既にテーブルで定義されている場合にのみ並列ロードに含まれます。

テーブルセグメントを列値の範囲として指定するには

  1. ranges タイプで parallel-load を指定します。

  2. テーブルセグメント間の境界を定義する列ごとに、テーブル列名を columns の値として指定します。列の順序は重要です。ここでは、次のステップと段落で説明するように、各境界を定義するうえで最初の列がもっとも重要であり最後の列は最も重要度が低くなります。

    注記

    • インデックス化された列を指定するとパフォーマンスが大幅に向上します。

    • 最大 10 個の列を指定できます。

    • 次の AWS DMS データ型の列は、セグメントの境界の定義には使用できません。DOUBLE、FLOAT、 LOB (BLOB、CLOB、NCLOB)。

    • Null 値のレコードはレプリケートされません。

  3. すべてのテーブルセグメントでデータ範囲を定義するには、boundaries の値として境界配列を指定します。

    境界配列は列値の配列の配列です。ここで、各 列と値の配列は、次のように定義する各テーブルセグメントの上限の境界を表します。

    1. 列と値の配列の各要素を、各列に対応する値として、columns 配列内でその列を指定したのと同じ順序で指定します。

      注記

      DATE 列の値を、ソースでサポートされる形式で入力します。

    2. 列と値の配列をそれぞれ上限の境界として指定します。テーブルの一番下のセグメントから、上から 2 番目のセグメントまで、順番に各セグメントを指定します。指定した上限の上にテーブルの行が存在する場合、これらの行はテーブルの一番上のセグメントを形成します。そのため、範囲ベースのセグメントの数は、境界配列のセグメント境界の数より 1 つ多くなることがあります。このような範囲ベースのセグメントはそれぞれ個別のスレッドに割り当てられます。

      注記

      データテーブル内のすべての列のデータ範囲を定義しない場合でも、null 以外のすべてのテーブルデータがレプリケートされます。

    たとえば、次のように COL1、COL2 COL 3 に 3 つの列と値の配列を定義したとします。

    COL1 COL2 COL3
    10 30 105
    20 20 120
    100 12 99

    3 つのセグメントの境界を定義したことで、合計で 4 つのセグメントができることがあります。

    各セグメントでレプリケートする行の範囲を識別するには、レプリケーションインスタンスは基本的に 4 つのセグメントそれぞれで 3 つの行に次の検索アルゴリズムを適用します。

    セグメント 1

    最初の 2 つの列の値が対応するセグメント 1 の上限値以下であり、3 つめの列がセグメント 1 の上限値未満であるすべての行をレプリケートします。

    セグメント 2

    最初の 2 つの列の値が対応するセグメント 2 の上限値以下であり、3 つめの列がセグメント 2 の上限値未満であるすべての行 (セグメント 1 の行を除く) をレプリケートします。

    セグメント 3

    最初の 2 つの列の値が対応するセグメント 3 の上限値以下であり、3 つめの列がセグメント 3 の上限値未満であるすべての行 (セグメント 2 の行を除く) をレプリケートします。

    セグメント 4

    残りのすべての行 (セグメント 1、2、3 の行を除く) をレプリケートします。

    この場合、レプリケーションインスタンスが次のように WHERE 句を作成して各セグメントをロードします。

    セグメント 1

    ((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105)))

    セグメント 2

    NOT ((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105))) AND ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120)))

    セグメント 3

    NOT ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120))) AND ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))

    セグメント 4

    NOT ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))

選択したテーブルの LOB の設定

table-settings ルールタイプオブジェクトの lob-settings オプションを指定して、単一のテーブルのタスク LOB 設定を上書きできます。追加のテーブルのタスク LOB 設定は、追加の table-settings オブジェクトに lob-settings オプションを指定することで上書きできます。

選択したテーブルの LOB 設定は、以下のソースとターゲットのエンドポイントの組み合わせでサポートされています。

  • Oracle

  • Microsoft SQL Server

  • MySQL

  • PostgreSQL

  • IBM Db2 (ソースのみ、次の段落で説明する mode および bulk-max-size 設定によって異なります)

  • SAP Adaptive Server Enterprise (ASE) (modebulk-max-size の設定に応じて、ソースまたはターゲット)

注記

LOB データ型は、プライマリキーを含むテーブルでのみサポートされます。

選択したテーブルの LOB 設定を使用するには、lob-settings オプションを指定して table-settings タイプのテーブルマッピングルールを作成します。これにより、オブジェクトロケーターオプションで識別されたテーブルの LOB 処理が指定されます。table-settings ルール内で、以下のパラメーターを使用して lob-settings オブジェクトを指定できます。

  • mode – 選択したテーブルの LOB 移行処理のメカニズムを次のように指定します。

    • limited – このデフォルトの制限付き LOB モードが、最も速く最も効率的なモードです。このモードは、LOB がすべて小さい (サイズが 100 MB 以内) か、ターゲットエンドポイントが無制限の LOB サイズをサポートしておらず、すべての LOB が bulk-max-size で設定したサイズ以内である場合にのみ使用します。このモードでは、レプリケーションインスタンスはすべての LOB を他の列のデータ型と一緒にメインテーブルストレージの一部としてインラインで移行します。ただし、bulk-max-size 値より大きい LOB はすべて、インスタンスによって指定のサイズに切り捨てられます。

      注記

      • 変更データキャプチャ (CDC) のロードの場合は、LOB のサイズにかかわらず、インスタンスはすべての LOB をソーステーブルの参照を使用して移行します。これは標準の完全 LOB モードと同様です。

      • インスタンスは LOB をバイナリ形式に変換します。したがって、レプリケートする必要がある最大の LOB を指定するには、サイズを 3 倍します。たとえば、最大の LOB が 2 MB の場合、bulk-max-size を 6000 (6 MB) に設定します。

    • unlimited – この完全 LOB モードの移行メカニズムは、次のように bulk-max-size に設定した値によって異なります。

      • 標準の完全 LOB モードbulk-max-size を 0 に設定すると、レプリケーションインスタンスは標準の完全 LOB モードを使用してすべての LOB を移行します。このモードでは、サイズにかかわらずすべての LOB を移行するために、ソーステーブルを参照する必要があります。そのため、通常は制限付き LOB モードよりもはるかに低速で移行されます。すべてまたはほとんどの LOB が大きい (1 GB 以上) の場合にのみ、このモードを使用します。

        注記

        レプリケーションに含まれる LOB がテーブルに含まれる場合、limited を使用する場合にのみ、タスク設定 BatchApplyEnabledtrue に設定できます。また、BatchApplyEnabledtrue に設定し、BatchApplyPreserveTransactionfalse に設定されていて、テーブルに LOB がありソースエンドポイントとターゲットエンドポイントが Oracle の場合、インスタンスは BatchApplyPreserveTransactiontrue に設定します。

      • 組み合わせ完全 LOB モードbulk-max-size を 0 以外の値に設定すると、この完全 LOB モードは制限付き LOB モードと標準の完全 LOB モードを組み合わせて使用します。つまり、LOB サイズが bulk-max-size 値以内の場合、インスタンスは制限付き LOB モードのようにインラインで LOB を移行します。LOB のサイズがこの値より大きい場合は、インスタンスは標準の完全 LOB モードのようにソーステーブルの三章を使用して LOB を移行します。このモードにより、移行速度はより高速な制限付き LOB モードと低速な標準の完全 LOB モードの中間になります。このモードは、小さい LOB と大きい LOB が混在しており、ほとんどの LOB が小さい場合にのみ使用します。

        注記

        • 以前にリストされている SQL エンドポイントに加えて、この組み合わせ完全 LOB モードは次のエンドポイントでも使用できます。

          • IBM Db2、ソースのみ

          • SAP Adaptive Server Enterprise (ASE)、ソースまたはターゲット

        • 変更データキャプチャ (CDC) のロードの場合は、インスタンスは常にソーステーブルの参照を使用して小さい LOB と大きい LOB を移行します。これは標準の完全 LOB モードと同様です。

      unlimited モードの指定に関わらず、インスタンスはすべての LOB を完全に移行し、切り捨ては行われません。

    • none – レプリケーションインスタンスはタスク LOB 設定を使用して、選択されたテーブルの LOB を移行します。このオプションを使用すると、選択されたテーブルに特化して LOB 設定を使用した場合と使用しない場合の移行結果を比較できます。

  • bulk-max-size – 前の項目で説明した mode に応じて、この値を 0 または 0 以外の値 (キロバイト) に設定します。limited モードでは、0 以外の値に設定する必要があります。

テーブル設定の例

例 パーティションでセグメント化されたテーブルのロード

次の例では、すべてのパーティションに基づいて並列でロードすることで、ソース内の SALES テーブルを効率的にロードします。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-auto" } } ] }

例 サブパーティションでセグメント化されたテーブルのロード

次の例では、すべてのサブパーティションに基づいて並列でロードすることで、Oracle ソース内の SALES テーブルを効率的にロードします。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "subpartitions-auto" } } ] }

例 パーティションのリストでセグメント化されたテーブルのロード

次の例では、特定のパーティションのリストに基づいて並列でロードすることで、ソース内の SALES テーブルをロードします。ここで、指定されたパーティションは英語のアルファベットの一部で始まる値を取って命名されます。たとえば、ABCDEFGH などです。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-list", "partitions": [ "ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWXYZ" ] } } ] }

例 選択されたパーティションおよびサブパーティションのリストでセグメント化された Oracle テーブルのロード

次の例では、選択されたパーティションおよびサブパーティションのリストを使用して並列でロードすることで、Oracle ソースの SALES テーブルをロードします。ここで、指定されたパーティションは英語のアルファベットの一部で始まる値を取って命名されます。たとえば、ABCDEFGH などです。指定されたサブパーティションはアラビア数字の一部で始まる値を取って命名されます。たとえば、01234 や 56789 などです。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-list", "partitions": [ "ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWXYZ" ], "subpartitions": [ "01234", "56789" ] } } ] }

例 列の値の範囲でセグメント化されたテーブルのロード

次の例では、SALES_NO および REGION 列の値の範囲で指定されたセグメントを使用して並列でロードすることで、ソース内の SALES テーブルをロードします。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "ranges", "columns": [ "SALES_NO", "REGION" ], "boundaries": [ [ "1000", "NORTH" ], [ "3000", "WEST" ] ] } } ] }

ここで、2 つの列は、SALES_NO および REGION という名前でセグメント範囲に指定されます。2 つの境界は 2 セットの列の値 (["1000","NORTH"] および ["3000","WEST"]) で指定されます。

したがって、これら 2 つの境界によって、並列でロードされる次の 3 つのテーブルセグメントが識別されます。

セグメント 1

SALES_NO が 1000 以下であり REGION が "NORTH" 未満である行。つまり、EAST リージョンで販売数が最大 1000 まで。

セグメント 2

セグメント 1 以外で SALES_NO が 3000 以下であり REGION が "WEST" 未満である行。つまり、NORTH および SOUTH リージョンで販売数が 1,000 を超え 3,000 まで。

セグメント 3

セグメント 1 および セグメント 2 以外の残りすべての行。つまり、WEST リージョンで販売数が 3000 超。

例 1 つは範囲でセグメント化されておりもう 1 つはパーティションでセグメント化された 2 つのテーブルのロード

次の例では、前述の例と同様に、識別したセグメント境界を使用して SALES テーブルを並列でロードし、すべてのパーティションを使用して ORDERS テーブルを並列でロードします。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "ranges", "columns": [ "SALES_NO", "REGION" ], "boundaries": [ [ "1000", "NORTH" ], [ "3000", "WEST" ] ] } }, { "rule-type": "table-settings", "rule-id": "3", "rule-name": "3", "object-locator": { "schema-name": "HR", "table-name": "ORDERS" }, "parallel-load": { "type": "partitions-auto" } } ] }

例 制限付き LOB モードを使用した LOB を含むテーブルのロード

次の例では、ソース内の LOB を含む ITEMS テーブルを、切り捨てられない最大サイズが 100 MB の制限付き LOB モード (デフォルト) を使用してロードします。このサイズよりも大きい LOB はすべて 100 MB に切り捨てられます。すべての LOB は、他のすべての列のデータ型と一緒にインラインでロードされます。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "bulk-max-size": "100000" } } ] }

例 標準の完全 LOB モードを使用したテーブルのロード

次の例では、標準の完全 LOB モードを使用して、すべての LOB を切り捨てずに、ソースの ITEMS テーブルをロードします。サイズを問わずすべての LOB は、ソーステーブルの各 LOB ごとに参照を使用して、他のデータ型とは別にロードされます。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "unlimited" "bulk-max-size": "0" } } ] }

例 組み合わせ完全 LOB モードを使用した LOB を含むテーブルのロード

次の例では、組み合わせ完全 LOB モードを使用して、すべての LOB を切り捨てずに、ソースの ITEMS テーブルをロードします。サイズが 100 MB 以内のすべての LOB は他のデータ型とともにインラインでロードされます。制限付き LOB モードと同様です。サイズが 100 MB を超えるすべての LOB は、他のデータ型とは別に、ソーステーブルの各 LOB の参照を使用してロードされます。標準の完全 LOB モードと同様です。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "unlimited" "bulk-max-size": "100000" } } ] }

例 タスク LOB 設定を使用した LOB を含むテーブルのロード

次の例では、タスク LOB 設定を使用して、すべての LOB を含め、ソースの ITEMS テーブルをロードします。100 MB の bulk-max-size 設定は無視され、limited または unlimited モードにクイックリセットするためにのみ残されます。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "none" "bulk-max-size": "100000" } } ] }

ソースフィルタの使用

ソースフィルタを使用すると、ソースからターゲットに転送されるレコードの数とタイプを制限できます。たとえば、本社を拠点とする従業員だけがターゲットデータベースに移行されるように指定できます。フィルタは、選択ルールの一部です。データの列にフィルタを適用します。

ソースフィルタは、以下の制約に従う必要があります。

  • 選択ルールには、フィルタを設定しないことも、1 つ以上のフィルタを選択することもできます。

  • すべてのフィルタには 1 つ以上のフィルタ条件を設定できます。

  • 複数のフィルタを使用する場合、フィルタのリストはフィルタ間で AND 演算子を使用しているものとして結合されます。

  • 1 つのフィルタ内で複数のフィルタ条件を使用する場合、フィルタ条件のリストはフィルタ条件間で OR 演算子を使用しているものとして結合されます。

  • フィルタは rule-action = 'include' の場合のみ適用されます。

  • フィルタには、列名とフィルタ条件のリストが必要です。フィルタ条件には、フィルタ演算子と値が必要です。

  • 列名、テーブル名、およびスキーマ名では大文字と小文字が区別されます。

JSON 形式のソースフィルタルールの作成

選択ルールで JSON filters パラメータを使用してソースフィルタを作成できます。filters パラメータは、1 つ以上の JSON オブジェクトの配列を指定します。各オブジェクトには、ソースフィルタのタイプ、列の名前、フィルタ条件を指定するパラメータがあります。これらのフィルタ条件には、1 つ以上のフィルタ演算子およびフィルタ値が含まれています。

次の表は、filters オブジェクトでソースフィルタリングを指定するパラメーターを示しています。

パラメータ

filter-type

source

column-name

フィルタを適用するソース列の名前。名前は、大文字と小文字が区別されます。

filter-conditions

filter-operator 値に応じて、1 つ以上のオブジェクトには filter-operator パラメータおよび適切な値パラメータが含まれています。

filter-operator

このパラメータには以下の値のいずれかがあります。

  • ste – 以下

  • gte – 以上

  • eq – 等しい

  • between – 2 つの値に等しい、またはその間

value または

start-value

end-value

filter-operator パラメータの値。filter-operatorbetween 以外の値がある場合には、value を使用します。filter-operatorbetween に設定されている場合は、1 つが start-value 用、もう 1 つが end-value 用の 2 つの値を指定します。

以下の例では、ソースフィルタを使用する一般的な方法をいくつか示します。

例 1 つのフィルタ

以下のフィルタは、empid >= 100 のすべての従業員をターゲットデータベースにレプリケートします。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "gte", "value": "100" }] }] }] }

例 複数のフィルタ演算子

以下のフィルタは、複数のフィルタ演算子を 1 つのデータ列に適用します。このフィルタは、(empid <=10) または (empid is between 50 and 75) または (empid >= 100) のすべての従業員をターゲットデータベースにレプリケートします。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "ste", "value": "10" }, { "filter-operator": "between", "start-value": "50", "end-value": "75" }, { "filter-operator": "gte", "value": "100" }] }] }] }

例 複数のフィルタ

以下のフィルタは、テーブル内の 2 つの列に複数のフィルタを適用します。このフィルタは、(empid <= 100) および (dept= tech) のすべての従業員をターゲットデータベースにレプリケートします。

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "ste", "value": "100" }] }, { "filter-type": "source", "column-name": "dept", "filter-conditions": [{ "filter-operator": "eq", "value": "tech" }] }] }] }

時刻と日付でフィルタリング

インポートするデータを選択すると、フィルタ条件の一部として日付または期間を指定できます。AWS DMS は、フィルタリングに日付形式 YYYY-MM-DD と時刻形式 YYYY-MM-DD HH:MM:SS を使用します。AWS DMS 比較関数は SQLite のルールに従います。SQLite のデータ型と日付変換については、SQLite ドキュメントの「SQLite バージョン 3 のデータ型」を参照してください。

以下の例は、日付をフィルタリングする方法を示しています。これは、empstartdate >= January 1, 2002 のすべての従業員をターゲットデータベースにレプリケートします。

例 1 つの日付フィルタ

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empstartdate", "filter-conditions": [{ "filter-operator": "gte", "value": "2002-01-01" }] }] }] }