注意事項
不支援複雜的過濾語句,例如COLUMN1 IN (SELECT id FROM table1)
。
若源表或集合中存在兩個列名僅大小寫不同的列,則可能會導致過濾任務無法達到預期結果。
來源資料庫類型為Tair/Redis時,僅支援通過Key的首碼過濾資料。
來源資料庫類型為MongoDB時,僅全量同步或遷移任務支援過條件過濾,增量同步處理或遷移階段不支援。
來源資料庫類型為除Tair/Redis和MongoDB外的資料庫時,如果過濾條件需要使用引號時,請使用單引號(')。
請勿在過濾條件的末尾輸入分號(;),否則可能會導致任務失敗。
若在源庫執行UPDATE操作,且該操作滿足特定的條件(前鏡像值滿足過濾條件,但後鏡像值不滿足過濾條件),DTS預設會將UPDATE語句轉換為DELETE語句,然後在目標庫中執行。
重要
在源庫為SQL Server的DTS執行個體中,如果過濾的欄位不是叢集索引列,則該過濾邏輯將無法生效。
操作步驟
在配置任務對象及高級配置階段,將任務對象移動到已選擇對象地區框中後,按右鍵目標對象。
說明
來源資料庫類型為MongoDB時,任務對象的選擇粒度需為集合;來源資料庫類型為Tair/Redis時,任務對象的選擇粒度需為Redis DB;來源資料庫為其他類型的資料庫時,任務對象的選擇粒度需為表。
在彈出的對話方塊中,填入過濾條件。
過濾條件的文法與來源資料庫的類型有關,分為Tair/Redis、MongoDB和其他類型的資料庫三種。
單擊確定。
根據提示完成後續的任務配置。
後續操作
查看過濾語句
當前任務未完成配置:返回到配置任務對象及高級配置階段,在已選擇對象地區框中展開任務同步或遷移的對象,然後按右鍵目標對象,查看過濾條件。
當前任務已完成配置並運行:可以使用建立類似任務或修改同步對象功能,進入配置任務對象及高級配置階段,在已選擇對象地區框中展開任務同步或遷移的對象,然後按右鍵目標對象,查看過濾條件(查看完成後取消任務即可,無需繼續往後執行)。更多資訊,請參見建立類似任務和修改同步對象。
修改過濾語句
常見報錯
若您填寫的過濾條件不正確,任務可能會出現如下報錯,請結合具體報錯資訊和後續操作進行修複。
錯誤碼 | 報錯資訊 | 說明 |
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 列的值為空白,需要過濾掉值為空白的資料。 |