Data Transmission Service (DTS) を使用してデータ同期またはデータ移行を実行する場合、宛先データベースが AnalyticDB for MySQL 3.0 であれば、DTS は複数テーブルのマージ機能を提供します。この機能により、ソースデータベース内の同一構造を持つ複数のテーブルを統合し、宛先データベースの単一データテーブルにマージできます。これにより、より効率的で便利なデータ移行と統合が可能になります。
前提条件
宛先が AnalyticDB for MySQL 3.0 の移行タスクまたは同期タスクを作成し、オブジェクトの設定と詳細設定 ステップに進んでいること。関連する設定ドキュメントについては、「データ同期ソリューションの概要」または「データ移行ソリューションの概要」をご参照ください。
注意事項
-
データ検証が有効になっているタスクでは、複数テーブルのマージを有効にすることはできません。
-
複数テーブルのマージが有効になっている増分タスクは、DDL 操作をサポートしていません。ソースデータベースで DDL 操作を実行すると、データ損失やタスクの失敗を引き起こす可能性があります。
手順
このセクションでは、DTS データ同期インスタンスで複数テーブルのマージを有効にする方法を説明します。
-
オブジェクトの設定と詳細設定 ステップに移動し、テーブルの結合 セクションより前のすべてのパラメーターを設定します。
-
テーブルの結合 セクションで、○ を選択します。
-
任意: __dts_data_source の値を設定 で、いいえ を選択します。
説明タグ列の名前と値のカスタマイズは、サブスクリプションインスタンスでのみサポートされています。
-
ソースオブジェクト ペインで同期するテーブルを選択し、
アイコンをクリックして 選択中のオブジェクト ペインに移動します。 -
選択中のオブジェクト ペインで、同期するテーブルを右クリックします。テーブルの編集 ダイアログボックスで、テーブル名 を変更します。
説明テーブル名 は、宛先データベースにおけるテーブルの名前です。
テーブル名 の変更と同様のプロセスです。[テーブルの編集] ダイアログボックスで、テーブル名をターゲット名 (例:
person_new) に変更し、[フィルター条件] (標準の SQL WHERE 句をサポートし、フル同期と増分同期の両方に適用されます) を設定し、同期する [DML 操作] (insert、update、または delete) を選択し、同期する列 (例: p_name と p_id) を選択できます。完了したら、[OK] をクリックします。 -
前の手順を繰り返して、選択したすべてのテーブルの テーブル名 を変更します。
重要マージされるすべてのテーブルに、同じ テーブル名 を指定する必要があります。
-
画面の指示と参考ドキュメントに従って、残りのタスク設定を完了します。
ステップ 3 で __dts_data_source の値を設定 で ○ を選択した場合、データベース設定とテーブルのフィールド設定 ステップで __dts_data_source の値 も設定する必要があります。
説明__dts_data_source の値 列の値は、テーブルごとに一意である必要があります。
[データベースとテーブルフィールドの構成] ページで、[__dts_data_source の値] 列を見つけ、各ソーステーブルに一意の値を入力します。このページの他の列には、[スキーマ名]、[テーブル名]、[タイプ] (例:パーティションテーブル)、[プライマリキー列]、および [分散キー] が含まれます。
よくある質問
__dts_data_source 列を照会するにはどうすればよいですか?
複数テーブルのマージを有効にすると、DTS は宛先テーブルに __dts_data_source 列 (テキスト型) を自動的に追加してデータソースを記録します。この列を照会するには、次の構文を使用します:
SELECT __dts_data_source FROM <destination_table_name>;
返される値は DTS インスタンス ID:データベース名:スキーマ名:テーブル名 の形式になります。例: dts:dtstestdata:testschema:customer1。
「Column cannot be resolved」エラーでクエリが失敗する場合
このエラーが発生した場合は、次の項目を確認してください:
-
DTS タスクで複数テーブルのマージが有効になっているかどうか。複数テーブルのマージが有効になっていない場合、宛先テーブルには
__dts_data_source列は含まれません。 -
ソースデータベースではなく、宛先データベースを照会しているかどうか。
-
列名が単一アンダースコアではなく、二重アンダースコアのプレフィックス (
__dts_data_source) を使用しているかどうか。