このトピックでは、データ移行または同期タスクの作成時に移行または同期オブジェクトを選択した後に、SQL 条件を使用してデータをフィルタリングするシナリオ、制限、および手順について説明します。
シナリオ
データ移行または同期タスクを作成するときに、SQL 条件を指定してデータをフィルタリングできます。フィルター条件を満たすデータのみがターゲットデータベースに移行されます。この機能を使用すると、スケジュールされたデータ同期または移行、データテーブルシャーディング、履歴データとダーティデータのフィルタリングなど、複数のシナリオでデータをフィルタリングできます。
データ伝送サービスを使用すると、移行または同期タスクの実行中に、移行または同期オブジェクトの SQL 条件を変更できます。詳細については、「移行オブジェクトとそのフィルター条件を表示および変更する」および「同期オブジェクトとそのフィルター条件を表示および変更する」をご参照ください。
制限事項
SQL 条件は、現在のテーブルのフィールドのみをフィルタリングします。テーブル間のフィルタリングはサポートされていません。
SQL 条件は、完全移行、完全同期、および増分同期でサポートされています。
SQL 条件でフィルタリングする列に対して DDL 操作を実行しないでください。そうしないと、移行または同期の例外が発生する可能性があります。
手順
[移行オブジェクトの選択] ステップまたは [同期オブジェクトの選択] ステップへのプロンプトに従って、データ移行タスクまたは同期タスクを構成します。
詳細については、対応するデータソースタイプの データ移行 タスクまたは データ同期 タスクに関するトピックをご参照ください。

移行または同期するデータベースオブジェクトを指定した後、[移行スコープの選択]/[同期スコープの選択] セクションの [ターゲットオブジェクト] ペインで構成するテーブルオブジェクトにポインターを移動し、[設定] をクリックします。

設定 ダイアログボックスで、標準の SQL WHERE 句を指定して、行ごとにデータをフィルタリングします。

SQL WHERE 句の構文は次のとおりです。
システムは、列名の大文字と小文字の変換を実行しません。正しい列名を入力し、列名をエスケープ文字 (`) で囲みます。例:
`col`。フィルター条件は、標準の SQL WHERE 文をサポートしています。
=、! =、<、>オペレーターのみがサポートされており、WHERE 条件を満たすデータのみがターゲットデータベースに同期されます。例:`id`> 200。フィルター条件は、時間条件に基づくフィルタリングをサポートしています。ただし、SQL WHERE 文の時間形式の要件 (
yyyy-MM-dd HH:mm:ssまたはyyyy-MM-dd) に注意してください。たとえば、2022 年 12 月 31 日以降の増分データをフィルタリングするには、
`date_now` > '2022-12-31'または`date_now` > '2022-12-31 00:00:00'と入力します。指定した期間内のデータを取得する場合は、AND または OR 演算子を使用します。たとえば、2021 年 12 月 31 日から 2022 年 4 月 1 日までのデータをフィルタリングするには、
`init_date`>'20211231' and `init_date`<'20220401'と入力します。フィルター条件では、単一引用符 (') を使用します。例:
`address` in ('BEIJING','HANGZHOU')。
構文の検証 をクリックします。

[OK] をクリックします。
プロンプトに従って、後続のタスク設定を完了します。