全部產品
Search
文件中心

Data Transmission Service:遷移對象配置說明

更新時間:Jul 06, 2024

在調用ConfigureMigrationJob介面時,您需要傳入遷移對象參數。本文為您介紹遷移對象參數的定義和配置案例。

相關介面

配置遷移執行個體

遷移對象定義說明

遷移對象(MigrationObject)的取實值型別為Object,支援一定的Regex,詳細定義如下。

[
    {
        "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 for MySQLAnalyticDB for PostgreSQL時,本參數才可用且必須傳入。

PartKey

當目標庫為雲原生數倉AnalyticDB for MySQLAnalyticDB for 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 for MySQLAnalyticDB for PostgreSQL,且源表customer在目標表中的主鍵、分布鍵設為CREATE_TIME。

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

支援的Regex

符號

規則描述

英文句號(.)

表示匹配除‘\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]。