Todos os produtos
Search
Central de documentação

Data Transmission Service:Objetos de migração, sincronização e assinatura

Última atualização: Jul 02, 2026

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 Dblist.

Consulte objetos no parâmetro de resposta DbObject.

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:

    Importante

    Instâncias de assinatura não suportam mapeamento. O valor do parâmetro name deve 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:

    Nota
    • Este 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_operation

    Mé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.

    targetType

    Formato dos dados após a gravação no OSS (conversão forçada). Formatos compatíveis: Byte, Integer, Long, Double, String, Binary, Boolean, Timestamp e Date.

    Nota

    Se não especificado, o DTS converte automaticamente os tipos de dados de origem.

    etl_date

    Nome da coluna adicional (constante) a ser adicionada.

    Nota

    Os valores dos dois parâmetros etl_date devem ser iguais.

    syntacticType

    Fixo como ADD, indicando que uma coluna foi adicionada.

    Nota

    O valor da coluna adicionada (value) deve ser uma constante entre aspas simples ('').

    part_key

    Chave de partição da tabela de destino. Dois valores possíveis:

    Nota

    Necessá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.

      Nota

      O formato é <Key>=<Value>. Por exemplo, dt=2025-07-07 indica uma coluna constante chamada dt com valor 2025-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

name

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.

all

Especifica se todas as tabelas ou colunas devem ser selecionadas. Valores válidos:

  • true: sim.

    Nota

    Se definido como true, não é necessário especificar tabelas ou colunas individuais.

  • false: não.

Table

Informações da tabela de origem.

filter

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 id>10 para migrar ou sincronizar apenas os dados cujo valor da coluna ID seja maior que 10. Para mais informações sobre o formato das condições de filtro, consulte Definir condições de filtro.

Nota

Tarefas de assinatura não suportam a definição de condições de filtro.

column

Informações da coluna de origem.

key

Especifica se a coluna é uma chave primária. Valores válidos:

  • PRI: sim.

  • String vazia: não.

sharedKey

Especifica se a coluna é uma chave de shard. Valores válidos:

  • true: sim.

  • false: não.

Nota

Necessário apenas quando o tipo de banco de dados é Kafka.

type

Tipo de dados do campo.

state

Se o valor for checked, a coluna está selecionada.

shard

Contagem de shards para a tabela a ser migrada ou sincronizada.

Nota

Necessário apenas quando o tipo de banco de dados é Kafka.

dml_op

Operações DML para migração ou sincronização incremental. Valores válidos:

  • i: INSERT.

  • u: UPDATE.

  • d: DELETE.

  • Se este parâmetro estiver vazio, todas as operações DML compatíveis com a tarefa serão migradas ou sincronizadas incrementalmente.

  • none: Nenhuma operação DML é migrada ou sincronizada incrementalmente.

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.

ddl_op

Operações DDL para migração ou sincronização incremental. Valores válidos:

  • ct: CREATE TABLE.

  • at: ALTER TABLE.

  • dt: DROP TABLE.

  • rt: RENAME TABLE.

  • tt: TRUNCATE TABLE.

  • Se este parâmetro estiver vazio, todas as operações DDL compatíveis com a tarefa serão migradas ou sincronizadas incrementalmente.

  • none: Nenhuma operação DDL é migrada ou sincronizada incrementalmente.

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.

primary_key

Chave primária. Necessário apenas quando o destino é AnalyticDB for MySQL ou AnalyticDB for PostgreSQL.

part_key

Chave de partição. Necessário quando o destino é AnalyticDB for MySQL ou AnalyticDB for PostgreSQL.

type

Importante

Este parâmetro type difere do parâmetro type que representa o tipo de dados de um campo.

Tipo da tabela quando o destino é AnalyticDB for MySQL ou AnalyticDB for PostgreSQL. Valores válidos:

  • dimension: tabela de dimensão.

  • partition: tabela particionada.

tagColumnValue

Valor personalizado da coluna de tag __dts_data_source. Necessário quando o destino é AnalyticDB for MySQL.

conflict

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:

  • overwrite: Substitui registros conflitantes no banco de dados de destino.

  • interrupt: Reporta um erro e encerra. A tarefa entra no estado de falha e requer intervenção manual.

    Nota

    O console exibe TaskFailed.

  • ignore: Ignora a instrução conflitante e mantém os registros existentes no banco de dados de destino.

resolve_method

Política independente de resolução de conflitos no nível da tabela. Compatível apenas com sincronização incremental. Valores válidos:

  • overwrite: Substitui registros conflitantes no banco de dados de destino.

  • interrupt: Reporta um erro e encerra. A tarefa entra no estado de falha e requer intervenção manual.

    Nota

    O console exibe TaskFailed.

  • ignore: Ignora a instrução conflitante e mantém os registros existentes no banco de dados de destino.

  • use_max: Compara registros conflitantes e grava aquele com o maior valor. Reverte para overwrite se o registro de destino não existir ou se o tipo de campo não for compatível.

  • use_min: Compara registros conflitantes e grava aquele com o menor valor. Reverte para ignore se o registro de destino não existir ou se o tipo de campo não for compatível.

cdr_cmp_col

  • Nível da tabela: Coluna de detecção de conflitos para a qual uma política independente de resolução de conflitos precisa ser definida, excluindo chaves primárias e chaves únicas. Os valores devem ser iguais.

    Importante
    • Quando a política de resolução de conflitos é use_max ou use_min, os parâmetros cdr_cmp_col e cdr_rslv_col devem ser especificados.

    • O valor já inclui chaves primárias e chaves únicas por padrão. Não é necessário especificar manualmente as colunas correspondentes.

  • Nível do banco de dados: Coluna de detecção de conflitos para a qual uma política independente de resolução de conflitos precisa ser definida. Os valores devem ser iguais.

    Importante

    Os parâmetros cdr_cmp_col e cdr_rslv_col devem ser especificados.

cdr_rslv_col

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 coluna name da tabela customer no banco de dados dtstestdata2 como overwrite.

    {
        "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 name e addr de todas as tabelas a serem sincronizadas no banco de dados dtstestdata1 como use_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 name e addr de todas as tabelas a serem sincronizadas no banco de dados dtstestdata2 como use_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 HProp dos DBs chamados 0 e 1 (ou seja, os Prefixes of Keys to Be Synchronized são HProp). Para o DB chamado 2, sincronize apenas dados com o prefixo de chave dts, mas sem incluir dtstest (ou seja, os Prefixes of Keys to Be Synchronized são dts, e os Prefixes of Keys to Be Filtered Out são dtstest).

    {
        "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, h.*llo corresponde a strings como hllo ou heeeello.

Ponto de interrogação (?)

Corresponde à subexpressão anterior zero ou uma vez. Por exemplo, h.?llo corresponde a hllo ou hello, mas não a haello.

[caracteres] Conjunto de caracteres

Corresponde a qualquer caractere dentro dos colchetes. Por exemplo, h[ae]llo corresponde a hallo ou hello.

[^caracteres] Conjunto negativo de caracteres

Corresponde a qualquer caractere que não esteja dentro dos colchetes. Por exemplo, h[^ae]llo corresponde a hcllo ou hdllo, mas não a hallo ou hello.

[caractere1-caractere2] Intervalo de caracteres

Corresponde a quaisquer caracteres dentro do intervalo de caractere1 a caractere2. Exemplo: [0-9] e [a-z].