データ同期または移行タスクを設定する際に、Data Transmission Service (DTS) のオブジェクト名マッピング機能を使用すると、宛先インスタンス内のデータベース、テーブル、列などのオブジェクト名を指定できます。この機能により、宛先インスタンスの特定のオブジェクトにデータを同期または移行したり、ソースオブジェクトと同じスキーマで名前が異なる新しいオブジェクトを宛先インスタンスに作成したりできます。
利用シーン
以下のシナリオは、ソースデータベースとターゲットデータベースが同じデータベースインスタンス内に存在する場合にも適用されます。この場合、データ隔離が必要です。例えば、異なるデータベース名やテーブル名を使用してデータを隔離できます。
|
シナリオ |
説明 |
|
ターゲットデータベースにデータを受け取るためのオブジェクトを作成します。 |
|
|
ターゲットデータベース内でデータを受け取るオブジェクトを指定します。例えば、複数のテーブルから単一の大きなテーブルにデータを集約できます。 |
事前にターゲットデータベースにデータを受け取るためのオブジェクトを作成し、データの互換性を確保する必要があります。
|
|
ターゲットデータベースにオブジェクトを作成します。 |
このシナリオは、データ移行タスクでのみサポートされています。移行タイプ パラメーターには、スキーマ移行 のみを選択する必要があります。 |
前提条件
タスクは オブジェクト設定 ステージにあり、データベース、テーブル、および列のマッピングを実行する必要があります。オブジェクト設定 ステージに進む方法については、同期ソリューションの概要 および 移行ソリューションの概要 にある関連構成ドキュメントをご参照ください。
-
移行タイプ または 同期タイプ のすべてのオプションを選択することを推奨します。そうしないと、同期または移行の結果が期待どおりにならない可能性があります。
-
レガシ構成ページは、オブジェクトの設定と詳細設定 のステップにある必要があります。
注意事項
-
タスクの開始後にオブジェクト名をマッピングすると、データ損失やタスクの失敗を引き起こす可能性があるため、行わないでください。
-
Tair または Redis インスタンスの場合、データベース名マッピングのみがサポートされています。DB 0 から DB 255 までの宛先データベースを指定してデータを受信できます。
-
ターゲットデータベースのタイプが DataHub の場合、データベース名マッピングはサポートされていません。
-
ターゲットデータベースタイプが Kafka の場合、マッピング機能を使用して テーブル名 を変更すると、データは指定したトピックに書き込まれます。テーブル名 フィールドに入力するトピック名が、ターゲットの Kafka インスタンスに存在することを確認する必要があります。そうでない場合、タスクは失敗します。
-
同期または移行するオブジェクトとしてデータベース全体を選択した場合、データベース名マッピングのみがサポートされます。
-
テーブル名または列名のマッピングを使用する必要がある場合、タスクオブジェクトの選択粒度を、MongoDB ソースデータベースの場合はコレクション、Tair/Redis ソースデータベースの場合は Redis DB、その他のデータベースタイプの場合はテーブルにする必要があります。
-
オブジェクト名マッピングを使用すると、マッピングされたオブジェクトに依存する他のオブジェクトの同期または移行が失敗する可能性があります。
単一オブジェクト名のマッピング
-
タスクオブジェクトをソースオブジェクトエリアから選択中のオブジェクトボックスに移動します。
-
データベースまたはテーブルのマッピングダイアログボックスを開きます。
-
選択中のオブジェクト エリアで対象のオブジェクトを右クリックします。
-
対象のオブジェクトにカーソルを合わせ、表示される編集 ボタンをクリックします。
-
-
表示されたダイアログボックスで、宛先インスタンスのオブジェクト名を変更します。
説明-
特定のインスタンスでデータベース名またはテーブル名をマッピングする際に、追加の列を追加したり、増分タスクの SQL ステートメント (DML と DDL) をフィルターしたりすることもできます。利用可能な具体的な機能はコンソールによって異なります。
-
データベース名マッピングとテーブル名マッピングで異なる SQL ステートメントを選択した場合、テーブル名マッピングで選択されたステートメントが優先されます。
-
テーブルの編集 ダイアログボックスで、タスクデータをフィルターする条件を設定することもできます。詳細については、「フィルター条件の設定」をご参照ください。
-
データベース名マッピング
スキーマの編集 ダイアログボックスで、宛先インスタンスのデータベース名を設定します。
説明ソースとターゲットのデータベースタイプが両方とも SQL Server の場合、データベース名の編集 ダイアログボックスが表示されます。
-
テーブル名マッピング
テーブルの編集 ダイアログボックスで、宛先インスタンスのデータテーブル名を設定します。
説明宛先インスタンスが Elasticsearch の場合、インデックス名とタイプ名でサポートされている特殊文字はアンダースコア (_) のみです。
-
列名マッピング
テーブルの編集 ダイアログボックスの [列] エリアで、宛先インスタンス内の対応する列の ターゲット列名 を設定します。
例えば、ソース列
idをid_newに、nameをname_newにマッピングできます。
-
-
[OK] をクリックします。
-
残りの設定手順を完了します。
複数オブジェクト名の一括マッピング
-
タスクオブジェクトを ソースオブジェクト ボックスから 選択中のオブジェクト ボックスに移動します。
-
選択中のオブジェクト エリアの右上隅にある 一括編集 をクリックします。
-
一括編集 ダイアログボックスでは、必要に応じてデータベースまたはテーブルの名前をバッチマップできます。
ソースデータベースタイプ:Tair/Redis
-
オブジェクトを選択 ボックスで、編集するオブジェクトを選択します。
説明バッチ編集タイプのデフォルトは選択したデータベースのみを含めるです。
-
任意: 編集タイプの選択 セクションで、オブジェクト名 タブをクリックします。
-
変更の範囲を選択します。
-
名前が変更されたオブジェクト名に基づいて変更する:名前変更済みのデータベース名にバッチ変更が適用されることを示します。
-
元のオブジェクト名に基づいて変更する: 元の名前を編集して、新しいデータベース名を生成します。
-
-
名前変更のルールを選択し、新しい名前を設定します。
-
名前にプレフィックスまたはサフィックスを追加:ルールを選択 で プレフィックスとサフィックスの追加 を選択し、プレフィックスとサフィックスを入力します。
-
一括名前変更: ルールを選択 を すべての名前の変更 に設定し、新しい名前を入力します。
-
すべての名前から特定の部分を削除:ルールを選択 を すべての名前を短縮 に設定し、削除するキーワードを入力します。
-
-
アプリケーション をクリックして、設定済みのバッチマッピングルールを追加します。
-
[OK] をクリックします。
ソースデータベースが SQL Server の場合
-
一括編集タイプを選択します。
この例では、選択したすべてのデータベースとテーブル を選択します。
-
オブジェクトを選択 ボックスで、編集するオブジェクトを選択します。
-
任意: 編集タイプの選択 セクションで、オブジェクト名 タブをクリックします。
-
オプション:オブジェクト名タイプを選択します。
説明オブジェクト設定 ページで 移行元データベースと移行先データベースのスキーママッピングモード が 移行先テーブル名として、<移行元スキーマ名>.<移行元テーブル名> を使用 に設定されている場合、または オブジェクト設定 ページに 移行元データベースと移行先データベースのスキーママッピングモード 設定項目がない場合にのみ、オブジェクト名タイプを選択する を設定できます。
-
データベース / テーブル名: 選択したオブジェクト内のデータベースとテーブルのみの名前マッピングを変更します。
-
スキーマ名:選択したオブジェクトのスキーマ名のみのマッピングを変更します。
-
-
変更の範囲を選択します。
-
名前が変更されたオブジェクト名に基づいて変更する: 名前変更後のオブジェクト名を対象にバッチ変更を適用します。
-
元のオブジェクト名に基づいて変更する: 元の名前に基づいてライブラリ名を変更します。
-
-
名前変更のルールを選択し、新しい名前を設定します。
-
名前にプレフィックスまたはサフィックスを追加するには、ルールを選択 で プレフィックスとサフィックスの追加 を選択し、プレフィックスとサフィックスを入力します。
-
一括名前変更: ルールを選択 を すべての名前の変更 に設定し、新しい名前を入力します。
-
すべての名前から特定の部分を削除:ルールを選択 を すべての名前を短縮 に設定し、削除するキーワードを入力します。
-
-
アプリケーション をクリックして、設定したバッチマッピングルールを追加します。
-
[OK] をクリックします。
その他のデータベースタイプ
-
一括編集タイプを選択します。
この例では、選択したすべてのデータベースとテーブル を選択します。
-
オブジェクトを選択 ボックスで、編集するオブジェクトを選択します。
-
任意: 編集タイプの選択 セクションで、オブジェクト名 タブをクリックします。
説明特定のインスタンスでは、一括マッピングによって追加の列を追加したり、増分タスクの SQL ステートメント (DML と DDL) をフィルターしたりすることもできます。利用可能な具体的な機能はコンソールによって異なります。
-
変更の範囲を選択します。
-
名前が変更されたオブジェクト名に基づいて変更する: バッチ変更が、名前変更後のデータベース、テーブル、および列の名前に適用されます。
-
元のオブジェクト名に基づいて変更する: データベース、テーブル、および列の名前が、元の名前に基づいてバッチ操作で変更されることを示します。
-
-
名前変更のルールを選択し、新しい名前を設定します。
-
名前にプレフィックスまたはサフィックスを追加: ルールを選択 で プレフィックスとサフィックスの追加 を選択し、プレフィックスとサフィックスを入力します。
-
一括名前変更: ルールを選択 を すべての名前の変更 に設定し、新しい名前を入力します。
-
すべての名前から特定の部分を削除するには、ルールを選択 を すべての名前を短縮 に設定し、削除するキーワードを入力します。
-
-
アプリケーション をクリックして、設定済みのバッチマッピングルールを追加します。
-
[OK] をクリックします。
-
-
残りの設定手順を完了します。
特定の列の同期または移行
複数のテーブルのデータを単一の宛先テーブルに同期または移行するテーブル結合シナリオでは、この機能を使用するとタスクの失敗やデータの不整合を引き起こす可能性があります。
-
同期または移行するテーブルをソースオブジェクト ボックスから選択中のオブジェクト ボックスに移動します。
-
選択中のオブジェクト エリアでターゲットオブジェクトを右クリックすると、テーブルマッピングインターフェイスが開きます。
-
テーブルの編集 ダイアログボックスで、[列] の下で、すべての列を同期する の選択を解除します。
id(bigint) やname(varchar(20)) など、同期する列を選択し、必要に応じて [宛先の列名] ボックスで名前を変更します。 -
同期または移行したくない列の選択を解除します。
-
[OK] をクリックします。
-
残りの設定手順を完了します。
よくある質問
-
同期または移行したくない列をどのように除外しますか?
カラム名マッピングを使用するには、すべての列を同期する の選択を解除し、対応するカラムのチェックボックスの選択を解除します。
-
列名マッピングを使用して列のデータ型を変更できますか?
いいえ。
-
既存の一括編集ルールを変更できますか?
いいえ。ルールの横にある削除アイコン
をクリックしてルールを削除し、新しいルールを追加できます。 -
一括編集ルールが消えてしまったのはなぜですか?
バッチマッピングルールを設定した後にアプリケーションをクリックしなかったか、誤ってルールを削除したためである可能性があります。