在配置数据迁移任务的迁移对象时,您可以设置过滤条件,过滤待迁移数据。只有满足过滤条件的数据才会被迁移到目标数据库。该功能可应用于数据的定期迁移、拆分数据表等多种应用场景。
注意事项
不支持复杂的过滤语句,例如
COLUMN1 IN (SELECT id FROM table1)。若源表或集合中存在两个列名仅大小写不同的列,则可能会导致过滤任务无法达到预期结果。
源数据库类型为Tair/Redis时,仅支持通过Key的前缀过滤数据。
源数据库类型为MongoDB时,仅全量同步或迁移任务支持过条件过滤,增量同步或迁移阶段不支持。
源数据库类型为除Tair/Redis和MongoDB外的数据库时,如果过滤条件需要使用引号时,请使用单引号(')。
请勿在过滤条件的末尾填入分号(;),否则可能会导致任务失败。
若在源库执行UPDATE操作,且该操作满足特定的条件(前镜像值满足过滤条件,但后镜像值不满足过滤条件),DTS默认会将UPDATE语句转换为DELETE语句,然后在目标库中执行。
重要在源库为SQL Server的DTS实例中,如果过滤的字段不是聚集索引列,则该过滤逻辑将无法生效。
DTS的过滤机制为前序过滤。如配置的过滤字段值发生变更,则将依据变更前的值进行过滤。
示例:假设您配置了过滤条件
enabled = 1,DTS将仅同步满足该过滤条件的数据。如果将数据字段enabled = 1修改为enabled = 0,系统将视为先删除了enabled = 1的数据,然后再写入enabled = 0的数据。由于前一操作满足过滤条件,该数据将被删除;而后续的数据由于不满足过滤条件,因此不会被同步。若您需要同步enabled = 0和enabled = 1的数据,则需去除该过滤条件并重新进行同步。
操作步骤
新版控制台的操作步骤,请参见设置过滤条件。
-
配置数据迁移任务的设置迁移类型及列表环节中,将要迁移的对象移动到已选择区域框中后,把鼠标指针放置在要修改的数据表上,并单击数据表后出现的编辑。在迁移类型及列表配置页面的已选择对象区域,将鼠标悬浮在目标表(如order表)上,单击右侧出现的编辑按钮。
-
在弹出的对话框中,填入过滤条件。
-
关系型数据库,例如MySQL、SQL Server。
说明-
过滤条件支持标准的SQL WHERE语句(仅支持
=、!=、<和>操作符),只有满足WHERE条件的数据才会被迁移到目标数据库中。本案例填入orderid>100。 -
过滤条件支持按时间条件过滤,但SQL WHERE语句中时间的格式有一定要求,例如过滤2020年之后创建的增量数据,您需要填入
create_time>'2020-01-01'或create_time>'2020-01-01 00:00:00',不支持填入create_time>'2020'。 -
过滤条件中如需使用引号,请使用英文单引号('),例如
address in('hangzhou','shanghai')。 -
如源库中同一张表内存在两个列A和a,由于过滤条件忽略列名的英文大小写,则SQL WHERE语句仅支持过滤列A,不支持过滤列a,例如支持
WHERE A=10,不支持WHERE a=10。
-
-
非关系型数据库,例如MongoDB。在编辑Collection对话框中,将Collection名称设置为
customer,在过滤条件文本域中输入JSON查询条件,可单击验证语法按钮校验所填条件的语法正确性。说明支持JSON格式的查询条件,只有满足JSON条件的数据才会被迁移到目标库中。本案例填入
{"id":{$gt:"52b64e55dc4449b7ba3d1183a0ea171b"}},即ID大于该值的数据才会被迁移。
-
-
单击验证语法,确认语法正确性。
说明-
如果语法正确,则弹出提示对话框,并显示验证通过。
-
如果语法错误,则弹出错误对话框,您需要根据对话框中的提示,对过滤条件进行调整。
-
-
单击确定。
-
根据提示,完成后续的数据迁移任务配置。