在调用ConfigureMigrationJob接口时,您需要传入迁移对象参数。本文为您介绍迁移对象参数的定义和配置案例。

相关接口

配置迁移实例

迁移对象定义说明

迁移对象(MigrationObject)的取值类型为Object,支持一定的正则表达式,详细定义如下。

[
    {
        "DBName":"待迁移的库名",
        "NewDBName":"待迁移的库在目标实例中映射的库名",
        "SchemaName":"待迁移的Schema名",
        "NewSchemaName":"待迁移的Schema在目标实例中映射的Schema名",
        "AllTable": false,
        "TableIncludes":[
            {
                "TableName":"待迁移的表名",
                "NewTableName":"待迁移的表在目标实例中映射的别名",
                "FilterCondition":"where condition",
                "PrimaryKey":"待迁移表的主键列,多列用逗号分隔",
                "PartKey":"待迁移表的分布列,多列用逗号分隔",
                "ColumnIncludes":[
                    {
                        "ColumnName":"待迁移表中需迁移列名",
                        "NewColumnName":"待迁移的列在目标实例中映射的列名"
                    }
                ],
                "ColumnExcludes":[{
                    "ColumnName":"待迁移表中不需要迁移的列名"
                }]
            }
        ],
        "TableExcludes":[{
            "TableName":"待迁移库中不需要迁移的表名"
        }]
    }
]
表 1. 补充说明
参数 说明
SchemaName 当源库为SQL Server或PostgreSQL时,本参数才可用且必须传入。
NewSchemaName 当目标库为SQL Server或PostgreSQL时,本参数才可用。
ALLTABLE 待迁移schema下所有表是否都需配置,默认为false,也可填true

填写为false时,需传入参数TableIncludesTableExcludes

填写为true时,只需传入参数TableIncludes

PrimaryKey 当目标库为云原生数仓AnalyticDB MySQL、AnalyticDB PostgreSQL时,本参数才可用且必须传入。
PartKey 当目标库为云原生数仓AnalyticDB MySQL、AnalyticDB PostgreSQL时,本参数才可用且必须传入。
ColumnNameColNewColumnNameumnName 需保障源表的列名和目标表的列名的顺序一一对应,否则DTS可能找不到对应的列。
FilterCondition 过滤条件,只有满足过滤条件的数据才会被迁移到目标数据库中。
说明
  • 过滤条件支持标准的SQL WHERE语句。
  • 过滤条件中如需使用引号,请使用英文单引号('),例如address in('hangzhou','shanghai')

迁移对象配置示例

示例一:迁移dtstestdata库中所有的表。

[{
    "DBName": "dtstestdata"
}]
示例二:将dtstestdata库中所有的表迁移至目标实例的mysqltest库中。
[{
    "DBName": "dtstestdata",
    "NewDBName": "mysqltest"
}]

示例三:迁移dtstestdata和mysqltest库中所有的表。

[{
    "DBName": "dtstestdata"
},{
    "DBName": "mysqltest"
}]

示例四:迁移dtstestdata库中除表名前缀为order以外的所有表。

[{
    "DBName": "dtstestdata",
    "AllTable": false,    
    "TableExcludes": [{
        "TableName": "order.*"
    }]
}]

示例六:迁移dtstestdata库中的customer表,且只迁移ID列中的值大于100的数据。

[{
    "SchemaName": "dtstestdata",
    "TableIncludes": [{
        "TableName": "customer",
        "FilterCondition": "id > 100"
    }]
}]

示例七:迁移dtstestdata库中的customer表,且只迁移表中的ID和address列。

[{
    "SchemaName": "dtstestdata",
    "TableIncludes": [{
        "TableName": "customer",
        "ColumnIncludes": [{
                "ColumnName": "id"
            },
            {
                "ColumnName": "address"
            }
        ]
    }]
}]

示例八:迁移dtstestdata库中的customer表至云原生数仓AnalyticDB MySQL、AnalyticDB PostgreSQL,且源表customer在目标表中的主键、分布键设为CREATE_TIME。

[{
    "SchemaName": "dtstestdata",
    "TableIncludes": [{
        "TableName": "customer",
        "PrimaryKey":"CREATE_TIME",
        "PartKey":"CREATE_TIME",
    }]
}]

支持的正则表达式

符号 规则描述
英文句号(.) 表示匹配除‘\r\n’之外的任何单个字符。
星号(*) 表示匹配前面子表达式任意次,例如:h.*llo将匹配 hllo或heeeello等字符串。
英文问号(?) 表示匹配前面子表达式零次或1次,例如:h.?llo将匹配hllo或hello,但不能匹配haello。
[characters] 字符集合 表示匹配方括号内任意一个字符,例如:h[ae]llo将匹配hallo或hello。
[^characters] 负值字符集合 表示不匹配方括号内任意一个字符,例如:h[^ae]llo将匹配hcllo或hdllo,但不能匹配hallo或hello。
[character1-character2] 字符范围 表示匹配character1-character2范围内的字符,例如: [0-9]、[a-z]。