过滤待迁移数据

更新时间:
复制 MD 格式

在配置数据迁移任务的迁移对象时,您可以设置过滤条件,过滤待迁移数据。只有满足过滤条件的数据才会被迁移到目标数据库。该功能可应用于数据的定期迁移、拆分数据表等多种应用场景。

注意事项

  • 不支持复杂的过滤语句,例如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的数据,则需去除该过滤条件并重新进行同步。

操作步骤

说明

新版控制台的操作步骤,请参见设置过滤条件。

  1. 配置数据迁移任务的设置迁移类型及列表环节中,将要迁移的对象移动到已选择区域框中后,把鼠标指针放置在要修改的数据表上,并单击数据表后出现的编辑。在迁移类型及列表配置页面的已选择对象区域,将鼠标悬浮在目标表(如order表)上,单击右侧出现的编辑按钮。

  2. 在弹出的对话框中,填入过滤条件。

    • 关系型数据库,例如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大于该值的数据才会被迁移。

  3. 单击验证语法,确认语法正确性。

    说明
    • 如果语法正确,则弹出提示对话框,并显示验证通过。

    • 如果语法错误,则弹出错误对话框,您需要根据对话框中的提示,对过滤条件进行调整。

  4. 单击确定。

  5. 根据提示,完成后续的数据迁移任务配置。