全部產品
Search
文件中心

Data Transmission Service:設定過濾條件

更新時間:Feb 07, 2026

在配置同步或遷移任務對象時,您可以通過設定過濾條件,將來源資料庫中滿足您需求的資料同步或遷移到目標資料庫。該功能常應用於分庫分表、同步或遷移部分資料等情境。

前提條件

當前任務處於對象配置階段。進入此階段的方法,請參見同步方案概覽遷移方案概覽中的相關配置文檔。

注意事項

  • 不支援複雜的過濾語句,例如COLUMN1 IN (SELECT id FROM table1)

  • 若源表或集合中存在兩個列名僅大小寫不同的列,則可能會導致過濾任務無法達到預期結果。

  • 來源資料庫類型為Tair/Redis時,僅支援通過Key的首碼過濾資料。

  • 來源資料庫類型為MongoDB時,僅全量同步或遷移任務支援過條件過濾,增量同步處理或遷移階段不支援。

  • 來源資料庫類型為除Tair/RedisMongoDB外的資料庫時,如果過濾條件需要使用引號時,請使用單引號(')。

  • 請勿在過濾條件的末尾填入分號(;),否則可能會導致任務失敗。

  • 若在源庫執行UPDATE操作,且該操作滿足特定的條件(前鏡像值滿足過濾條件,但後鏡像值不滿足過濾條件),DTS預設會將UPDATE語句轉換為DELETE語句,然後在目標庫中執行。

    重要

    在源庫為SQL Server的DTS執行個體中,如果過濾的欄位不是叢集索引列,則該過濾邏輯將無法生效。

  • DTS的過濾機製為前序過濾。如配置的過濾欄位值發生變更,則將依據變更前的值進行過濾。

    樣本:假設您配置了過濾條件enabled = 1,DTS將僅同步滿足該過濾條件的資料。如果將資料欄位enabled = 1修改為enabled = 0,系統將視為先刪除了enabled = 1的資料,然後再寫入enabled = 0的資料。由於前一操作滿足過濾條件,該資料將被刪除;而後續的資料由於不滿足過濾條件,因此不會被同步。若您需要同步enabled = 0enabled = 1的資料,則需去除該過濾條件並重新進行同步。

操作步驟

說明

過濾條件的設定方法與來源資料庫的類型有關,分為Tair/RedisMongoDB和其他類型的資料庫三種。

單個設定

  1. 對象配置階段,將任務對象移動到已選擇對象地區框中。

    說明

    來源資料庫類型為MongoDB時,任務對象的選擇粒度需為集合;來源資料庫類型為Tair/Redis時,任務對象的選擇粒度需為Redis DB;來源資料庫為其他類型的資料庫時,任務對象的選擇粒度需為表。

  2. 按右鍵目標對象。

  3. 在彈出的對話方塊中,填入過濾條件。

    • 來源資料庫類型為Tair/Redis:在彈出的編輯Schema對話方塊中,填入需要同步的首碼(白名單)或需要過濾的首碼(黑名單)。

    • 來源資料庫類型為MongoDB:在彈出的編輯表對話方塊中,填入過濾條件

    • 來源資料庫類型為其他:在彈出的編輯表對話方塊中,填入過濾條件

    說明

    過濾條件的文法,請參見樣本語句

  4. 設定完成後,單擊確定

  5. 根據提示完成後續的任務配置。

大量設定

  1. 對象配置階段,將任務對象移動到已選擇對象地區框中。

  2. 已選擇對象地區右上方,單擊大量編輯

  3. 選擇編輯對象框中,勾選需要編輯(設定首碼過濾條件)的對象。

    說明

    選擇類型保持預設即可。

  4. 選擇編輯類型地區,單擊過濾條件頁簽。

    說明

    若來源資料庫類型為Tair/Redis,則需單擊同步/過濾的首碼頁簽。

  5. 選擇選擇編輯模式

    • 追加:保留當前任務已有的過濾條件,並增加新過濾條件。

    • 覆蓋:清除當前任務已有的過濾條件,並採用新過濾條件。

  6. 設定過濾條件。

    • 來源資料庫類型為Tair/Redis:根據實際情況,勾選需要同步的首碼需要過濾的首碼,並填入對應的首碼。

    • 來源資料庫類型為MongoDB:在文字框中,填入過濾條件。

    • 來源資料庫類型為其他:在文字框中,填入過濾條件。

    說明

    過濾條件的文法,請參見樣本語句

  7. 設定完成後,單擊確定

  8. 根據提示完成後續的任務配置。

樣本語句

來源資料庫類型為Tair/Redis

過濾類型

樣本語句

說明

同步單個首碼

需要同步的首碼填入:dtsnew

只將待同步對象中Key以dtsnew開始的資料同步至目標端。

過濾單個首碼

需要過濾的首碼填入:dtstest

將待同步對象中Key以dtstest開始的資料進行過濾,將其餘資料同步至目標端。

同步多個首碼

需要同步的首碼填入:dtsnew,dtsold

只將待同步對象中Key以dtsnewdtsold開始的資料同步至目標端。

同步和過濾混用

需要同步的首碼填入:dts

需要過濾的首碼填入:dtstest

只將待同步對象中Key以dts開始,且不以dtstest開始的資料同步至目標端。

來源資料庫類型為MongoDB

過濾類型

樣本語句

說明

其他

{"_id":{$gt:"user100844658590795****",$lte:"user101674868045948****"}}

以使用者ID進行過濾,其中$gt表示大於,$lte表示小於等於。MongoDB過濾條件支援的語句與標準的SQL WHERE語句不同,更多資訊,請參見SQL語句與MongoDB語句的映射

來源資料庫為其他類型的資料庫

說明
  • 過濾條件支援的操作符有:英文字元=!=<>in

  • 若您填寫過濾條件時有疑問,可以先查看常見問題

樣本語句

過濾類型

樣本語句

說明

數值

id > 100 and id <= 200 or id in (1, 2, 3)

僅同步或遷移id欄位大於100且小於等於200,或id欄位為1、2或3的資料。

字串

address in('hangzhou','shanghai')

僅同步或遷移address欄位是hangzhoushanghai的資料。

時間

create_time>'2020-01-01'create_time>'2020-01-01 00:00:00'

僅同步或遷移2020年之後建立的資料。

重要
  • 不支援填入create_time>'2020'

  • DTS對時間類型的資料進行過濾時,使用的是GMT+8時區。若您的時間資料包含時區資訊,需要先將過濾條件的時間轉換為對應GMT+8時區的時間,然後再填入過濾條件

支援類型

資料庫

支援的資料類型

PostgreSQL

CHAR,BIGINT,SMALLINT,INTEGER,FLOAT4,FLOAT8,VARCHAR,DATE,TIMESTAMP,NUMERIC

Oracle

VARCHAR2,NVARCHAR2,NUMBER,DATE,ROWID,CHAR,BINARY_FLOAT,BINARY_DOUBLE,CLOB,NCLOB,TIMESTAMP,TIMESTAMP WITH TIME ZONE,UROWID

MySQL

DECIMAL,INTEGER,BIGINT,FLOAT4,DOUBLE,DATE,TIME,DATETIME,YEAR,VARCHAR

SQL Server

NCHAR,DATE,TIME,DATETIME2,TINYINT,SMALLINT,INT,SMALLDATETIME,REAL,DECIMAL,DATETIME,FLOAT,BIT,NUMERIC,BIGINT,VARCHAR,CHAR,TIMESTAMP,NVARCHAR,MONEY,SMALLMONEY,UNIQUEIDENTIFIER

DB2 LUW

SMALLINT,INTEGER,BIGINT,DECIMAL,NUMERIC,REAL,FLOAT,DOUBLE,DECFLOAT,CHAR,CHARACTER,VARCHAR,GRAPHIC,NCHAR,VARGRAPHIC,NVARCHAR,DATE,TIME,TIMESTAMP,BLOB,CLOB,DBCLOB,LONG VARG,LONG VARCHAR,LONG VARGRAPHIC,BINARY,VARBINARY,XML

DB2 AS400

BIGINT,INTEGER,SMALLINT,DECIMAL,NUMERIC,FLOAT,DECFLOAT,CHAR,VARCHAR,NCHAR,BINARY,DATE,TIME,TIMESTAMP,XML

後續操作

  • 查看過濾語句

    • 當前任務未完成配置:返回到配置任務對象及高級配置階段,在已選擇對象地區框中展開任務同步或遷移的對象,然後按右鍵目標對象,查看過濾條件

    • 當前任務已完成配置並運行:可以使用建立類似任務或修改同步對象功能,進入配置任務對象及高級配置階段,在已選擇對象地區框中展開任務同步或遷移的對象,然後按右鍵目標對象,查看過濾條件(查看完成後取消任務即可,無需繼續往後執行)。更多資訊,請參見建立類似任務修改同步對象

  • 修改過濾語句

    • 當前任務未完成配置:返回到配置任務對象及高級配置階段,在已選擇對象地區框中展開任務同步或遷移的對象,然後按右鍵目標對象,修改過濾條件

    • 當前任務已完成配置並運行:

      • 遷移任務:遷移任務不支援修改過濾條件,您需要重新設定任務。

      • 同步任務:使用修改同步對象功能進入配置任務對象及高級配置階段,在已選擇對象地區框中展開任務同步的對象,然後按右鍵目標對象,修改過濾條件並根據提示完成後續的任務配置。更多資訊,請參見修改同步對象

常見報錯

若您填寫的過濾條件不正確,任務可能會出現如下報錯,請結合具體報錯資訊和後續操作進行修複。

說明

報錯資訊中的Regex((.*)?)表示變數。

錯誤碼

報錯資訊

說明

DTS-RETRY-ERR-0070

In process of processing data (.*)? failed (.*)? Syntax error in SQL statement

配置同步對象的過濾欄位格式不正確。

DTS-RETRY-ERR-0145

Unknown column (.*)? in

當前任務配置的過濾條件中的欄位,在源庫中不存在。

DTS-RETRY-ERR-0147

You have an error in your SQL syntax

當前任務配置的過濾條件中的欄位,在源庫中不存在。

DTS-RETRY-ERR-0188

null value in column (.*)? violates not-null constraint

目標端有非空約束的列被過濾,或在源端沒有相應列的值。

DTS-RETRY-ERR-0276

if (.*)? is specified it must not be empty

映射到Elasticsearch中_id列的值為空白,需要過濾掉值為空白的資料。

常見問題

  • 為什麼填寫了過濾條件沒有生效?

    過濾條件的語句填寫有誤,或者當前任務是來源資料庫為MongoDB的增量任務(不支援設定過濾條件)。

  • 修改過濾條件後,生效範圍是哪些?

    • 當前任務未完成配置:來源資料庫為MongoDB時,僅在全量任務階段生效;來源資料庫為其他類型的資料庫時,全量任務和增量任務階段均生效。

    • 當前任務已完成配置並運行:來源資料庫為MongoDB時,不會生效(不支援);來源資料庫為其他類型的資料庫時,僅對增量資料生效。

  • 是否支援大量設定過濾條件?

    不支援,您可以在多個目標對象中分別填寫過濾條件。

  • 是否支援將滿足條件的資料過濾,將其餘資料同步或遷移到目標庫?

    • 來源資料庫類型為Tair/Redis時:支援,您可以填寫需要過濾的首碼,將滿足條件的Key過濾。

    • 來源資料庫為其他類型的資料庫時:不支援,您可以嘗試設定相反的過濾條件以滿足您的過濾需求。例如:您需過濾掉age欄位為25資料,您可以在過濾條件中填入age > 25 or age < 25

  • 若需要過濾的Key有多個,如何填寫過濾條件?

    您可以使用逗號(,)進行分隔。

  • 是否可以同時填寫需要同步的首碼需要過濾的首碼

    可以,填寫的同步和過濾Key的規則均會生效。

  • 過濾條件是否支援調用介面?

    不支援。

相關API

API介面

說明

ConfigureDtsJob

配置DTS遷移或同步任務,在Dblist中配置filter參數設定過濾條件。