tencent cloud

Data Transfer Service

Where条件フィルタリング

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2026-10-16 17:47:30
AI翻訳・品質チェック済み

操作シナリオ

同期タスクを設定する際、DTSは単一テーブルまたは複数テーブルに対して一括でWhere条件フィルタリングを設定することをサポートしています。設定ルールを満たすデータのみがターゲットデータベースに同期されるため、ユーザーは柔軟にデータを分割できます。

適用範囲

現在、一括Whereをサポートする同期リンク:MySQL/MariaDB/Percona/TDSQL-C MySQL/TDSQL Boundless/TDSQL MySQL相互間、MySQL/MariaDB/Percona/TDSQL-C MySQLからKafkaへの同期リンクです。
TDSQL MySQLからKafkaへの同期リンクは現在、単一テーブルに対するWhere条件の設定のみをサポートしており、Where条件の一括設定はサポートしていません。

制約事項

1. データベース全体またはテーブル全体に対するWhere条件の設定はサポートされていません。複数のテーブルにWhere条件フィルタリングを設定する必要がある場合は、複数のテーブルオブジェクトを順番に選択してから、Where条件ルールを設定してください。
2. 列フィルタリングとWhere条件フィルタリングの相互作用の説明は以下の通りです:
あるテーブルに列フィルタリングを実行し、ユーザーが同時にそのテーブルにWhereルールを設定する場合、ユーザー自身がWhereルールに入力する列名が同期対象のテーブルに含まれていることを保証する必要があります。そうでない場合、Whereルールは正常に設定できますが、後続のタスク開始後にエラーが発生します。

Where条件ルールの説明

1. Whereフィルタ条件を設定すると、単一テーブル内で設定ルールを満たすデータのみがターゲットデータベースに同期されます。
INSERT操作の場合、挿入するデータが条件フィルタリングルールを満たした場合のみ、ターゲットデータベースに同期されます。
DELETE操作の場合、削除するデータが条件フィルタリングルールを満たした場合のみ、ターゲットデータベースに同期されます。
UPDATE操作の場合、ユーザーは自身のニーズに応じて異なるルールを設定できます。
更新前、後両方とも満たす:更新前、後のデータが両方とも条件フィルタリングルールを満たした場合のみ、ターゲットデータベースに同期されます。
更新前に満たす:更新前のデータが条件フィルタリングルールを満たした場合、ターゲットデータベースに同期できます。
更新後に満たす:更新後のデータが条件フィルタリングルールを満たした場合、ターゲットデータベースに同期できます。
2. Where条件に入力するルールは有効なBOOL式でなければならず、式のルールはMySQLよりも厳格です。MySQLでサポートされているがWARNINGを生成する可能性のあるいくつかの構文(例えば、文字列と数字の比較、c1 + c2 < "abc")はここではサポートされていません。論理演算、算術演算、比較演算のルールと優先順位はMySQLと同じで、括弧を使用して演算の優先順位を変更することができます。オペランドにNULLが含まれている場合、演算ルールもMySQLと同じです。DTSシステムは入力された条件フィルタリングルールを検証し、無効な場合は警告を出します。
3. Where条件の基本的な演算ルールは以下の通りです:
列名を変数として導入できます。
NOT、AND、OR、XOR、&&、||の論理演算に対応しています。
数字タイプ(符号付き/符号なしの整数TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT、浮動小数点タイプFLOATおよびDOUBLE、精密タイプDECIMAL)およびその算術演算(+、-、*、/、%、DIV、MOD)と比較演算(=、!=、>、<、>=、<=、<>、<=>)に対応しています。
文字列型(CHAR、VARCHAR)およびその比較演算(二進比較)に対応しています。
日付型(DATE、DATETIME、TIMESTAMP)およびその比較演算に対応しています。
時間タイプ(TIME)およびその比較演算に対応しています。日付/時間タイプの変数と文字列の比較に対応しており、この場合、文字列は日付/時間タイプの定数に変換され、日付/時間の比較ルールに従って比較されます。
ユーザーはTIMESTAMP定数のタイムゾーンを指定できます。例:c1がTIMESTAMP型の列で、ユーザーが選択したタイムゾーンが+08:00の場合、入力フィルタールールが'c1 > "2016-10-01 09:00:00"'であれば、'c1 > "2016-10-01 09:00:00 +08:00"'に相当します。

Where条件の実装例

以下、異なるシナリオの操作結果について例を挙げます。各データにおいてIDはPKです。
例1:INSERT操作



例2:DELETE操作



例3:UPDATE操作(「更新前、後両方とも満たす」を例とする)




操作手順

1. 同期タスクの同期オプションと同期オブジェクトの設定ページで、同期オブジェクトをチェックします。
説明:
単一テーブルを順番に選択した場合のみ、後続のステップでwhere条件を設定できます。データベース全体/テーブル全体を選択した場合は、where条件を設定できません。



2. データ処理ルールを設定し、whereフィルターを有効にします。
2.1 オブジェクトを選択します。
前のステップで選択した同期オブジェクトの範囲から、where条件を設定する必要があるオブジェクト範囲をさらに選択します。



2.2 フィルター条件を設定して確認します。
UTCタイムゾーンを設定します:TIMESTAMPタイプのフィールドの比較値のタイムゾーンを指定し、データベースのタイムゾーンと一致させることをお勧めします。
UPDATEデータ条件:「更新前、後両方とも満たす」、「更新前に満たす」、「更新後に満たす」を選択できます。
条件式:where条件式を入力します。具体的なルールは本章の前述のWhere条件ルールの説明を参照してください。where条件を設定した後、チェック条件をクリックして入力内容の合法性を検出し、次にフィルタールール生成をクリックします。

3. フィルタールールを確認し、問題がなければ保存して次へをクリックして、後続の同期タスクフローに進みます。

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック