迁移对象配置说明

在调用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]。