Use as operações da API do DTS para configurar ou consultar objetos de migração, sincronização e assinatura. Este tópico abrange definições de objetos, parâmetros e exemplos de configuração.
Operações e parâmetros relacionados da API
|
API |
Descrição |
|
Configure objetos no parâmetro de solicitação |
|
|
Consulte objetos no parâmetro de resposta |
Definição de objetos de migração, sincronização ou assinatura
Os parâmetros relacionados a objetos usam strings JSON. A seção a seguir descreve os parâmetros disponíveis.
-
Quando os objetos incluem vários bancos de dados:
ImportanteInstâncias de assinatura não suportam mapeamento. O valor do parâmetro
namedeve corresponder ao nome real do banco de dados ou da tabela.{ "Name of database 1 to be migrated, synchronized, or subscribed to": { "name": "Name of database 1 in the destination instance", "all": true (Indicates that the entire database is migrated, synchronized, or subscribed to) }, "Name of database 2 to be migrated, synchronized, or subscribed to": { "name": "Name of database 2 in the destination instance", "all": false (Indicates that the entire database is not migrated, synchronized, or subscribed to), "Table": { "Name of table A to be migrated, synchronized, or subscribed to": { "name": "Name of table A in the destination instance", "all": true (Indicates that the entire table is migrated, synchronized, or subscribed to), "dml_op": "DML operations to be incrementally migrated or synchronized", "ddl_op": "DDL operations to be incrementally migrated or synchronized" } } }, "Name of database 3 to be migrated, synchronized, or subscribed to": { "name": "Name of database 3 in the destination instance", "all": true (Indicates that the entire database is migrated, synchronized, or subscribed to), "dml_op": "DML operations to be incrementally migrated or synchronized", "ddl_op": "DDL operations to be incrementally migrated or synchronized" } } -
Quando os objetos estão no nível de coluna ou incluem condições de filtro:
{ "Name of database to be migrated, synchronized, or subscribed to": { "name": "Name of database in the destination instance", "all": false (Indicates that the entire database is not migrated, synchronized, or subscribed to), "Table": { "Name of table A to be migrated, synchronized, or subscribed to": { "name": "Name of table A in the destination instance", "all": false (Indicates that the entire table is not migrated, synchronized, or subscribed to), "filter": "id>10" "column": { "id": { "key": "PRI", "name": "id", "type": "int(11)", "sharedKey": false, "state": "checked" } }, "shard": 12 } } } } -
Quando o destino é AnalyticDB for MySQL ou AnalyticDB for PostgreSQL:
{ "Name of database to be migrated or synchronized": { "name": "Name of database in the destination instance", "all": false (Fixed as false. Regardless of whether the objects are at the database or table level, if the destination instance is AnalyticDB for MySQL or AnalyticDB for PostgreSQL, this parameter is fixed as false, and you must also specify information such as the partition key of the table), "Table": { "Name of table A to be migrated or synchronized": { "all": true (Indicates that the entire table is migrated or synchronized), "name": "Name of table A in the destination instance", "primary_key": "id (Specifies the primary key)", "type": "dimension (Type of the table)", } "Name of table B to be migrated or synchronized": { "all": true (Indicates that the entire table is migrated or synchronized), "name": "Name of table B in the destination instance", "part_key": "id (Specifies the partition key)", "primary_key": "id (Specifies the primary key)", "type": "partition (Type of the table)", "tagColumnValue": "Value of the tag column" } } } } -
Ao definir políticas independentes de resolução de conflitos para objetos de sincronização:
NotaEste recurso é compatível apenas com instâncias de sincronização bidirecional entre instâncias MySQL ou entre clusters PolarDB for MySQL.
É possível definir políticas independentes de resolução de conflitos no nível do banco de dados ou da tabela.
A política global de resolução de conflitos não se aplica a colunas configuradas com uma política independente.
Configurações no nível da tabela
{ "Name of database 1 to be synchronized": { "name": "Name of database 1 in the destination instance", "all": true (Indicates that the entire database is synchronized), "conflict": "Task-level conflict resolution policy" }, "Name of database 2 to be synchronized": { "name": "Name of database 2 in the destination instance", "all": false (Indicates that the entire database is not synchronized), "conflict": "overwrite", "Table": { "Name of table A to be synchronized": { "name": "Name of table A in the destination instance", "all": true (Indicates that the entire table is synchronized), "cdr_cmp_col": "Conflict detection column", "cdr_rslv_col": "Conflict detection column", "resolve_method": "Table-level conflict resolution policy" } } } }Configurações no nível do banco de dados
-
Quando o objeto de sincronização é um banco de dados inteiro:
"Name of database 1 to be synchronized": { "name": "Name of database 1 in the destination instance", "all": true (Indicates that the entire database is synchronized), "conflict": "Task-level conflict resolution policy", "cdr_cmp_col": "Conflict detection column", "cdr_rslv_col": "Conflict detection column", "resolve_method": "Database-level conflict resolution policy" } } -
Quando o objeto de sincronização não é um banco de dados inteiro:
"Name of database 2 to be synchronized": { "name": "Name of database 2 in the destination instance", "all": false (Indicates that the entire database is not synchronized), "conflict": "Task-level conflict resolution policy", "cdr_cmp_col": "Conflict detection column", "cdr_rslv_col": "Conflict detection column", "resolve_method": "Database-level conflict resolution policy", "Table": { "Name of table A to be synchronized": { "name": "Name of table A in the destination instance", "all": true (Indicates that the entire table is synchronized) } } }
-
Ao configurar uma tarefa de integração de dados para um data lake:
Parâmetro
Descrição
write_operationMétodo de gravação quando ocorre um conflito de dados.
-
append: Mantém os dados existentes e adiciona novos dados. -
overwrite: Substitui os dados conflitantes no destino. -
errorIfExists: A tarefa reporta um erro e encerra. -
ignore: Ignora a gravação atual e mantém os dados existentes no destino.
targetTypeFormato dos dados após a gravação no OSS (conversão forçada). Formatos compatíveis:
Byte,Integer,Long,Double,String,Binary,Boolean,TimestampeDate.NotaSe não especificado, o DTS converte automaticamente os tipos de dados de origem.
etl_dateNome da coluna adicional (constante) a ser adicionada.
NotaOs valores dos dois parâmetros
etl_datedevem ser iguais.syntacticTypeFixo como ADD, indicando que uma coluna foi adicionada.
NotaO valor da coluna adicionada (
value) deve ser uma constante entre aspas simples ('').part_keyChave de partição da tabela de destino. Dois valores possíveis:
NotaNecessário apenas quando a tabela de destino é particionada.
-
Uma coluna a ser integrada da origem.
-
Uma coluna constante adicionada ao destino e definida como chave de partição.
NotaO formato é
<Key>=<Value>. Por exemplo,dt=2025-07-07indica uma coluna constante chamadadtcom valor2025-07-07.
{ "Name of database 1 to be integrated": { "all": false (Fixed as false), "Table": { "Name of table A to be integrated": { "all": false (Indicates that the entire table is not integrated), "filter": "", "write_operation": "Method used to write data", "name": "Name of table A in the destination instance", "column": { "Name of column a to be integrated": { "name": "Name of column a in the destination instance", "targetType": "Type of the column in OSS" }, ******, "etl_date": { "syntacticType": "ADD (Fixed as ADD)", "name": "etl_date", "type": "String (Fixed as String)", "value": "'2025-07-08 03:30:00'" } }, "part_key": "dt=2025-07-07" } }, "name": "dtstestdata (Name of database 1 in the destination instance)" } } -
|
Parâmetro |
Descrição |
|
|
Nome mapeado do banco de dados, tabela ou coluna de origem no destino. Por exemplo, para migrar o banco de dados dtssource para dtstarget, defina este parâmetro como dtstarget. |
|
|
Especifica se todas as tabelas ou colunas devem ser selecionadas. Valores válidos:
|
|
|
Informações da tabela de origem. |
|
|
Condição de filtro para os dados a serem migrados, sincronizados ou assinados. Pode ser definido apenas no nível da tabela. Por exemplo, defina este parâmetro como Nota
Tarefas de assinatura não suportam a definição de condições de filtro. |
|
|
Informações da coluna de origem. |
|
|
Especifica se a coluna é uma chave primária. Valores válidos:
|
|
|
Especifica se a coluna é uma chave de shard. Valores válidos:
Nota
Necessário apenas quando o tipo de banco de dados é Kafka. |
|
|
Tipo de dados do campo. |
|
|
Se o valor for |
|
|
Contagem de shards para a tabela a ser migrada ou sincronizada. Nota
Necessário apenas quando o tipo de banco de dados é Kafka. |
|
|
Operações DML para migração ou sincronização incremental. Valores válidos:
Nota
Para verificar as operações DML compatíveis por tipo de tarefa, consulte os documentos de configuração em Soluções de migração ou Soluções de sincronização. |
|
|
Operações DDL para migração ou sincronização incremental. Valores válidos:
Nota
Para verificar as operações DDL compatíveis por tipo de tarefa, consulte os documentos de configuração em Soluções de migração ou Soluções de sincronização. |
|
|
Chave primária. Necessário apenas quando o destino é AnalyticDB for MySQL ou AnalyticDB for PostgreSQL. |
|
|
Chave de partição. Necessário quando o destino é AnalyticDB for MySQL ou AnalyticDB for PostgreSQL. |
|
Importante
Este parâmetro |
Tipo da tabela quando o destino é AnalyticDB for MySQL ou AnalyticDB for PostgreSQL. Valores válidos:
|
|
|
Valor personalizado da coluna de tag __dts_data_source. Necessário quando o destino é AnalyticDB for MySQL. |
|
|
Política global de resolução de conflitos no nível da tarefa. Deve ser incluída em cada banco de dados a ser sincronizado com o mesmo valor. Valores válidos:
|
|
|
Política independente de resolução de conflitos no nível da tabela. Compatível apenas com sincronização incremental. Valores válidos:
|
|
|
|
|
|
Exemplos de configuração
-
Exemplo 1: Migrar, sincronizar ou assinar todas as tabelas no banco de dados dtstestdata.
{"dtstestdata": { "name": "dtstestdata", "all": true }} -
Exemplo 2: Migrar ou sincronizar o banco de dados dtstestdata e renomeá-lo para dtstestdata_new.
{"dtstestdata": { "name": "dtstestdata_new", "all": true }} -
Exemplo 3: Migrar, sincronizar ou assinar tabelas específicas (como customer) no banco de dados dtstestdata.
{"dtstestdata": { "name": "dtstestdata", "all": false, "Table": { "customer": { "name": "customer", "all": true, "column": { "id": { "key": "PRI", "name": "id", "type": "int(11)", "sharedKey": false, "state": "checked" }, "gmt_create": { "key": "", "name": "gmt_create", "type": "datetime", "sharedKey": false, "state": "checked" }, "gmt_modify": { "key": "", "name": "gmt_modify", "type": "datetime", "sharedKey": false, "state": "checked" }, "valid_time": { "key": "", "name": "valid_time", "type": "datetime", "sharedKey": false, "state": "checked" }, "creator": { "key": "", "name": "creator", "type": "varchar(200)", "sharedKey": false, "state": "checked" } }, "shard": 12 } } } } -
Exemplo 4: Migrar ou sincronizar colunas específicas de tabelas (como customer e order) no banco de dados dtstestdata.
{"dtstestdata": { "name": "dtstestdata", "all": false, "Table": { "customer": { "name": "customer", "all": false, "column": { "id": { "key": "PRI", "name": "id", "type": "int(11)", "sharedKey": false, "state": "checked" }, "level": { "key": "", "name": "level", "type": "varchar(5000)", "sharedKey": false, "state": "checked" }, "name": { "key": "", "name": "name", "type": "varchar(500)", "sharedKey": false, "state": "checked" }, }, "shard": 12 }, "order": { "name": "order", "all": false, "column": { "id": { "key": "PRI", "name": "id", "type": "int(11)", "sharedKey": false, "state": "checked" } }, "shard": 12 } } } } -
Exemplo 5: Migrar ou sincronizar tabelas (como customer, order e commodity) do banco de dados dtstestdata para uma instância de destino AnalyticDB for MySQL ou AnalyticDB for PostgreSQL.
{ "dtstestdata": { "name": "dtstestdatanew", "all": false, "Table": { "order": { "name": "ordernew", "all": true, "part_key": "id", "primary_key": "id", "type": "partition" }, "customer": { "name": "customernew", "all": true, "primary_key": "id", "type": "dimension" }, "commodity": { "name": "commoditynew", "all": false, "filter": "id>10", "column": { "id": { "key": "PRI", "name": "id", "type": "int(11)" } }, "part_key": "id", "primary_key": "id", "type": "partition" } } } } -
Exemplo 6: Definir políticas independentes de resolução de conflitos para objetos de sincronização.
Configurações no nível da tabela
Defina a política global de resolução de conflitos para os objetos da tarefa de sincronização como
interrupt. Defina a política independente de resolução de conflitos para as colunas de chave primária, colunas de chave única e colunanameda tabela customer no banco de dados dtstestdata2 comooverwrite.{ "dtstestdata1": { "name": "dtstestdata1", "all": true, "conflict": "interrupt" }, "dtstestdata2": { "name": "dtstestdata2", "all": false, "conflict": "interrupt", "Table": { "customer": { "name": "customer", "all": true, "cdr_cmp_col": "name", "cdr_rslv_col": "name", "resolve_method": "overwrite" } } } }Configurações no nível do banco de dados
-
Quando o objeto de sincronização é um banco de dados inteiro: Defina a política independente de resolução de conflitos para as colunas
nameeaddrde todas as tabelas a serem sincronizadas no banco de dados dtstestdata1 comouse_max."dtstestdata1": { "name": "dtstestdata1", "all": true, "conflict": "overwrite", "cdr_cmp_col": "name,addr", "cdr_rslv_col": "name,addr", "resolve_method": "use_max" } } -
Quando o objeto de sincronização não é um banco de dados inteiro: Defina a política independente de resolução de conflitos para as colunas
nameeaddrde todas as tabelas a serem sincronizadas no banco de dados dtstestdata2 comouse_max."dtstestdata2": { "name": "dtstestdata2", "all": false, "conflict": "overwrite", "cdr_cmp_col": "name,addr", "cdr_rslv_col": "name,addr", "resolve_method": "use_max", "Table": { "person": { "name": "person", "all": true }, "class": { "name": "class", "all": true } } }
-
-
Exemplo 7: Para uma instância de sincronização em que o tipo de banco de dados de origem é Tair/Redis, sincronize apenas dados com o prefixo de chave
HPropdos DBs chamados 0 e 1 (ou seja, os Prefixes of Keys to Be Synchronized sãoHProp). Para o DB chamado 2, sincronize apenas dados com o prefixo de chavedts, mas sem incluirdtstest(ou seja, os Prefixes of Keys to Be Synchronized sãodts, e os Prefixes of Keys to Be Filtered Out sãodtstest).{ "0": { "name": "0", "all": true, "filter": "[{"condition":"HProp","filterType":"white","filterPattern":"prefix"}]" }, "1": { "name": "1", "all": true, "filter": "[{"condition":"HProp","filterType":"white","filterPattern":"prefix"}]" }, "2": { "name": "2", "all": true, "filter": "[{"condition":"dts","filterType":"white","filterPattern":"prefix"},{"condition":"dtstest","filterType":"black","filterPattern":"prefix"}]" } } -
Exemplo 8: Integrar a tabela commodity no banco de dados dtstestdata ao OSS de destino no formato Delta.
{ "dtstestdata(": { "all": false, "Table": { "commodity": { "all": false(), "filter": "", "write_operation": "overwrite", "name": "commodity", "column": { "IS_VALID": { "name": "is_valid", "targetType": "String" }, "BuiltinArchiveDate": { "name": "builtinarchivedate", "targetType": "String" }, "PRODUCT_NAME": { "name": "product_name", "targetType": "String" }, "PRODUCT_CODE": { "name": "product_code", "targetType": "String" }, "etl_date": { "syntacticType": "ADD", "name": "etl_date", "type": "String", "value": "'2025-07-08 03:30:00'" } }, "part_key": "dt=2025-07-07" } }, "name": "dtstestdata" } }
Expressões regulares compatíveis
|
Símbolo |
Descrição da regra |
|
Ponto (.) |
Corresponde a qualquer caractere único, exceto '\r\n'. |
|
Asterisco (*) |
Corresponde à subexpressão anterior qualquer número de vezes. Por exemplo, |
|
Ponto de interrogação (?) |
Corresponde à subexpressão anterior zero ou uma vez. Por exemplo, |
|
[caracteres] Conjunto de caracteres |
Corresponde a qualquer caractere dentro dos colchetes. Por exemplo, |
|
[^caracteres] Conjunto negativo de caracteres |
Corresponde a qualquer caractere que não esteja dentro dos colchetes. Por exemplo, |
|
[caractere1-caractere2] Intervalo de caracteres |
Corresponde a quaisquer caracteres dentro do intervalo de caractere1 a caractere2. Exemplo: [0-9] e [a-z]. |