Ao usar o Data Transmission Service (DTS) para sincronização ou migração de dados, o service oferece o recurso de mesclagem de múltiplas tabelas quando o banco de dados de destino é AnalyticDB for MySQL 3.0 . Esse recurso permite consolidar várias tabelas com estruturas idênticas no banco de dados de origem e mesclá-las em uma única tabela no banco de dados de destino, tornando a migração e a integração de dados mais eficientes e práticas.
Pré-requisitos
Crie uma tarefa de migração ou sincronização com destino AnalyticDB for MySQL 3.0 e avance até a etapa Configure Objects and Advanced Settings. Consulte os documentos de configuração relevantes em Synchronization Solution Overview ou Migration Solution Overview.
Observações de uso
Não é possível ativar a mesclagem de múltiplas tabelas em tarefas com verificação de dados ativada.
Tarefas incrementais com mesclagem de múltiplas tabelas ativada não suportam operações DDL. Executar uma operação DDL no banco de dados de origem pode causar perda de dados ou falha na tarefa.
Procedimento
Esta seção descreve como ativar a mesclagem de múltiplas tabelas para uma instância de sincronização de dados do DTS.
Acesse a etapa Configure Objects and Advanced Settings e configure todos os parâmetros anteriores à seção Merge Tables.
Na seção Merge Tables, selecione Yes.
-
Opcional: Em Set the value of __dts_data_source, selecione No.
NotaA personalização do nome e dos valores da coluna de tag é suportada apenas em instâncias por assinatura.
No painel Source Objects, selecione as tabelas a sincronizar e clique em no ícone
para movê-las ao painel Selected Objects.-
No painel Selected Objects, clique em com o botão direito na tabela a ser sincronizada. Na caixa de diálogo Edit Table, modifique o campo Table Name.
NotaO campo Table Name corresponde ao nome da tabela no banco de dados de destino.
O processo é semelhante à alteração do Table Name. Na caixa de diálogo Edit Table, altere o nome da tabela para um nome de destino (como
person_new), defina uma filter condition (que suporta cláusulas WHERE SQL padrão e se aplica tanto à sincronização completa quanto à incremental), selecione as DML operations a sincronizar (insert, update ou delete) e escolha as colunas a sincronizar (como p_name e p_id). Ao concluir, clique em OK. -
Repita a etapa anterior para modificar o Table Name de todas as tabelas selecionadas.
ImportanteEspecifique o mesmo Table Name para todas as tabelas a serem mescladas.
-
Siga as instruções na tela e os documentos de referência para concluir a configuração restante da tarefa.
Se você selecionou Yes para Set the value of __dts_data_source na etapa 3, também será necessário definir o Value of __dts_data_source na etapa Configure Database and Table Fields.
NotaO valor na coluna Value of __dts_data_source deve ser exclusivo para cada tabela.
Na página Configure Database and Table Fields, localize a coluna Value of __dts_data_source e insira um valor exclusivo para cada tabela de origem. Outras colunas nesta página incluem Schema Name, Table Name, Type (por exemplo, partitioned table), Primary Key Column e Distribution Key.
Perguntas frequentes
Como consultar a coluna __dts_data_source?
Após ativar a mesclagem de múltiplas tabelas, o DTS adiciona automaticamente uma coluna __dts_data_source (do tipo text) à tabela de destino para registrar a source dos dados. Use a seguinte sintaxe para consultar a coluna:
SELECT __dts_data_source FROM <destination_table_name>;
O valor retornado usa o formato DTS instance ID:database name:schema name:table name, por exemplo, dts:dtstestdata:testschema:customer1.
A consulta falha com a mensagem de erro "Column cannot be resolved"
Caso encontre esse erro, verifique os seguintes itens:
Confirme se a mesclagem de múltiplas tabelas está ativada para a tarefa do DTS. Sem essa ativação, a tabela de destino não contém a coluna
__dts_data_source.Verifique se a consulta está sendo executada no banco de dados de destino, e não no de origem.
Certifique-se de que o nome da coluna usa o prefixo de sublinhado duplo (
__dts_data_source), e não sublinhado simples.