在調用ConfigureSynchronizationJob接口或ModifySynchronizationObject接口時,您需要傳入同步對象參數。本文為您介紹同步對象的定義和配置案例。
相關接口
同步對象定義說明
同步對象(SynchronizationObjects)的取值類型為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": "該庫中不需要同步的表名"
}]
}]
補充說明
參數 | 說明 |
SchemaName | 當源庫為SQL Server或PostgreSQL時,本參數才可用且必須傳入。 |
NewSchemaName | 當目標庫為SQL Server或PostgreSQL時,本參數才可用。 |
ALLTABLE | 待同步schema下所有表是否都需同步,默認為false,也可填true。 填寫為false時,需傳入參數TableIncludes和TableExcludes 填寫為true時,只需傳入參數TableIncludes。 |
PrimaryKey | 當目標庫為云原生數倉AnalyticDB MySQL、云原生數據倉庫 AnalyticDB PostgreSQL 版時,本參數才可用且必須傳入。 |
PartKey | 當目標庫為云原生數倉AnalyticDB MySQL、云原生數據倉庫 AnalyticDB PostgreSQL 版時,本參數才可用且必須傳入。 |
ColumnName、NewColumnName | 需保障源表的列名和目標表的列名的順序一一對應,否則DTS可能找不到對應的列。 |
FilterCondition | 過濾條件,只有滿足過濾條件的數據才會被同步到目標數據庫中。 說明
|
同步對象配置示例
示例一:同步dtstestdata庫中所有的表。
[{
"DBName": "dtstestdata"
}]
示例二:同步dtstestdata庫中除表名前綴為order以外的所有表。
[{
"DBName": "dtstestdata",
"AllTable": false,
"TableExcludes": [{
"TableName": "order.*"
}]
}]
示例三:同步dtstestdata庫中的customer表至云原生數倉AnalyticDB MySQL、云原生數據倉庫 AnalyticDB PostgreSQL 版,且源表customer在目標表中的主鍵、分布鍵設為CREATE_TIME。
[{
"SchemaName": "dtstestdata",
"TableIncludes": [{
"TableName": "customer",
"PrimaryKey":"CREATE_TIME",
"PartKey":"CREATE_TIME",
}]
}]
支持的正則表達式
符號 | 規則描述 |
英文句號(.) | 表示匹配除‘\r\n’之外的任何單個字符。 |
星號(*) | 表示匹配前面子表達式任意次,例如: |
英文問號(?) | 表示匹配前面子表達式零次或1次,例如: |
[characters] 字符集合 | 表示匹配方括號內任意一個字符,例如: |
[^characters] 負值字符集合 | 表示不匹配方括號內任意一個字符,例如: |
[character1-character2] 字符范圍 | 表示匹配character1-character2范圍內的字符,例如: [0-9]、[a-z]。 |