Todos os produtos
Search
Central de documentação

Data Transmission Service:Filtrar dados de uma tarefa com uma condição SQL

Última atualização: Sep 18, 2026

Especifique uma condição SQL ao configurar o objeto da tarefa para sincronizar ou migrar apenas os dados que atendem à condição. Este recurso aplica-se a cenários de sincronização periódica de dados, migração e divisão de tabelas.

Pré-requisitos

Você iniciou a configuração de uma tarefa e chegou à etapa Configure Objects and Advanced Settings. Para iniciar a configuração de uma tarefa, siga Configure a data synchronization task (new console).

Limitações

  • Não há suporte para instruções de filtro complexas. Por exemplo, COLUMN1 IN (SELECT id FROM table1).

    OLUMN1 IN (SELECT id FROM table1).

  • Se a tabela ou coleção de origem tiver duas colunas cujos nomes diferem apenas em maiúsculas e minúsculas, a tarefa de filtro pode não atingir o resultado esperado.

    o columns whose names differ only in case, the filter task may fail to achieve the expected result.

  • Quando o tipo do banco de dados de origem é Tair/Redis, há suporte somente para filtro de chaves baseado em prefixo.

    , only prefix-based key filtering is supported.

  • Quando o tipo do banco de dados de origem é MongoDB, somente tarefas de sincronização ou migração completa aceitam filtragem condicional. Não há suporte para sincronização ou migração incremental.

    synchronization or migration tasks support conditional filtering. Incremental synchronization or migration is not supported.

  • Quando o tipo do banco de dados de origem é diferente de Tair/Redis e MongoDB, use aspas simples (') caso a condição de filtro exija aspas.

    833fe828ef">, if the filter condition requires quotation marks, use single quotation marks (').

  • Não adicione ponto e vírgula (;) ao final de uma condição de filtro. Caso contrário, a tarefa pode falhar.

    end of a filter condition. Otherwise, the task may fail.

  • Se uma operação UPDATE ocorrer no banco de dados de origem e atender a condições específicas (o valor anterior à alteração atende à condição de filtro, mas o valor posterior não), o DTS converte a instrução UPDATE em uma instrução DELETE por padrão e a executa no banco de dados de destino.

    Importante

    Em uma instância do DTS cujo banco de dados de origem é SQL Server, se o campo de filtro não for uma coluna de índice clusterizado, a lógica de filtro não terá efeito.

  • O mecanismo de filtro do DTS é de pré-filtragem. Se o valor do campo de filtro configurado for alterado, a filtragem ocorre com base no valor anterior à alteração.

    Exemplo: suponha que você configurou a condição de filtro enabled = 1. O DTS sincroniza apenas dados que atendem a essa condição. Se o campo de dados enabled = 1 for modificado para enabled = 0, o sistema considera essa operação como primeiro excluir o dado enabled = 1 e depois gravar o dado enabled = 0. Como a operação anterior atende à condição de filtro, o dado é excluído; porém, o dado subsequente não é sincronizado, pois não atende à condição de filtro. Se precisar sincronizar dados de enabled = 0 e enabled = 1, remova a condição de filtro e faça a ressincronização.

Procedimento

Nota

O método de configuração das condições de filtro depende do tipo do banco de dados de origem. Ele se divide em três categorias: Tair/Redis, MongoDB e outros tipos de banco de dados.

Configure condições de filtro para objetos individuais

  1. Na etapa Configure Objects, mova os objetos da tarefa para a área Selected Objects.

    Nota

    Quando o tipo do banco de dados de origem é MongoDB, a granularidade dos objetos da tarefa deve ser no nível da coleção. Se for Tair/Redis, a granularidade deve ser no nível do Redis DB. Para os demais tipos, a granularidade deve ser no nível da tabela.

  2. Clique com o botão direito no objeto de destino.

  3. Na caixa de diálogo exibida, insira a condição de filtro.

    • Quando o tipo do banco de dados de origem é Tair/Redis: na caixa de diálogo Edit Schema exibida, insira Prefixes of Keys to Be Synchronized (lista de permissões) ou Prefixes of Keys to Be Filtered Out (lista de bloqueios).

    • Quando o tipo do banco de dados de origem é MongoDB: na caixa de diálogo Edit Table exibida, insira Filter Conditions.

    • Para os demais tipos de banco de dados de origem: na caixa de diálogo Edit Table exibida, insira Filter Conditions.

    Nota

    Para obter informações sobre a sintaxe das condições de filtro, consulte Sample statements.

  4. Após concluir as configurações, clique em OK.

  5. Siga as instruções para concluir a configuração subsequente da tarefa.

Configure condições de filtro em lote

  1. Na etapa Configure Objects, mova os objetos da tarefa para a área Selected Objects.

  2. No canto superior direito da área Selected Objects, clique em Batch Edit.

  3. Na caixa Select Objects, selecione os objetos a serem editados (para definir condições de filtro por prefixo).

    Nota

    Mantenha o valor padrão em Select Type.

  4. Na área Select Editing Type, clique na aba Filter Conditions.

    Nota

    Se o tipo do banco de dados de origem for Tair/Redis, clique na aba Prefixes of Keys to Be Synchronized/Filtered Out.

  5. Selecione Select Edit Mode.

    • Add: mantém as condições de filtro existentes da tarefa atual e adiciona novas condições de filtro.

    • Overwrite: remove as condições de filtro existentes da tarefa atual e aplica as novas condições de filtro.

  6. Configure as condições de filtro.

    • Quando o tipo do banco de dados de origem é Tair/Redis: conforme o cenário real, selecione Prefixes of Keys to Be Synchronized ou Prefixes of Keys to Be Filtered Out e insira o prefixo correspondente.

    • Quando o tipo do banco de dados de origem é MongoDB: na caixa de texto, insira a condição de filtro.

    • Para os demais tipos de banco de dados de origem: na caixa de texto, insira a condição de filtro.

    Nota

    Para obter informações sobre a sintaxe das condições de filtro, consulte Sample statements.

  7. Após concluir as configurações, clique em OK.

  8. Siga as instruções para concluir a configuração subsequente da tarefa.

Exemplos de instruções

O tipo do banco de dados de origem é Tair/Redis

Tipo de filtro

Exemplo de instrução

Descrição

Sincronizar um único prefixo

Insira em Prefixes of Keys to Be Synchronized: dtsnew

Sincroniza para o destino apenas os dados cujas chaves começam com dtsnew entre os objetos a sincronizar.

Filtrar um único prefixo

Insira em Prefixes of Keys to Be Filtered Out: dtstest

Descarta os dados cujas chaves começam com dtstest entre os objetos a sincronizar e envia os dados restantes ao destino.

Sincronizar múltiplos prefixos

Insira em Prefixes of Keys to Be Synchronized: dtsnew,dtsold

Sincroniza para o destino apenas os dados cujas chaves começam com dtsnew ou dtsold entre os objetos a sincronizar.

Combinar sincronização e filtragem

Insira em Prefixes of Keys to Be Synchronized: dts

Insira em Prefixes of Keys to Be Filtered Out: dtstest

Sincroniza para o destino apenas os dados cujas chaves começam com dts mas não começam com dtstest entre os objetos a sincronizar.

O tipo do banco de dados de origem é Prefixes of Keys to Be Synchronized

Tipo de filtro

Exemplo de instrução

Descrição

Outros

{"_id":{$gt:"user100844658590795****",$lte:"user101674868045948****"}}

Filtra pelo ID do usuário, em que $gt significa maior que e $lte significa menor ou igual a. As instruções aceitas pelas condições de filtro do MongoDB são diferentes das instruções WHERE do SQL padrão. Para mais informações, consulte SQL to MongoDB mapping.

O banco de dados de origem é de outros tipos

Nota
  • Prefixes of Keys to Be Filtered Out aceita os seguintes operadores: =, !=, <, > e in.

  • Em caso de dúvidas ao inserir as condições de filtro, consulte primeiro FAQ.

Exemplos de instruções

Tipo de filtro

Exemplo de instrução

Descrição

Numérico

id > 100 and id <= 200 or id in (1, 2, 3)

Sincroniza ou migra apenas os dados cujo campo id seja maior que 100 e menor ou igual a 200, ou cujo campo id seja 1, 2 ou 3.

String

address in('hangzhou','shanghai')

Sincroniza ou migra apenas os dados cujo campo address seja hangzhou ou shanghai.

Tempo

create_time>'2020-01-01' ou create_time>'2020-01-01 00:00:00'

Sincroniza ou migra apenas os dados criados após 2020.

Importante
  • Não há suporte para inserir create_time>'2020'.

  • Ao filtrar dados do tipo tempo, o DTS usa o fuso horário GMT+8. Se os seus dados de tempo contiverem informações de fuso horário, converta primeiro o tempo da condição de filtro para o horário correspondente em GMT+8 e depois insira-o em MongoDB.

Tipos suportados

Banco de dados

Tipos de dados suportados

PostgreSQL

CHAR,BIGINT,SMALLINT,INTEGER,FLOAT4,FLOAT8,VARCHAR,DATE,TIMESTAMP,NUMERIC

Oracle

VARCHAR2,NVARCHAR2,NUMBER,DATE,ROWID,CHAR,BINARY_FLOAT,BINARY_DOUBLE,CLOB,NCLOB,TIMESTAMP,TIMESTAMP WITH TIME ZONE,UROWID

MySQL

DECIMAL,INTEGER,BIGINT,FLOAT4,DOUBLE,DATE,TIME,DATETIME,YEAR,VARCHAR

SQL Server

NCHAR,DATE,TIME,DATETIME2,TINYINT,SMALLINT,INT,SMALLDATETIME,REAL,DECIMAL,DATETIME,FLOAT,BIT,NUMERIC,BIGINT,VARCHAR,CHAR,TIMESTAMP,NVARCHAR,MONEY,SMALLMONEY,UNIQUEIDENTIFIER

DB2 LUW

SMALLINT,INTEGER,BIGINT,DECIMAL,NUMERIC,REAL,FLOAT,DOUBLE,DECFLOAT,CHAR,CHARACTER,VARCHAR,GRAPHIC,NCHAR,VARGRAPHIC,NVARCHAR,DATE,TIME,TIMESTAMP,BLOB,CLOB,DBCLOB,LONG VARG,LONG VARCHAR,LONG VARGRAPHIC,BINARY,VARBINARY,XML

DB2 AS400

BIGINT,INTEGER,SMALLINT,DECIMAL,NUMERIC,FLOAT,DECFLOAT,CHAR,VARCHAR,NCHAR,BINARY,DATE,TIME,TIMESTAMP,XML

Operações subsequentes

  • Visualize as instruções de filtro

    • A tarefa atual ainda não foi configurada: retorne à etapa Filter Conditions. Na área Filter Conditions, expanda os objetos a sincronizar ou migrar e clique com o botão direito no objeto de destino para visualizar as Configure Objects and Advanced Settings.

    • A tarefa atual está configurada e em execução: use o recurso Create Similar Task ou Modify Sync Objects para acessar a etapa Selected Objects. Na área Filter Conditions, expanda os objetos a sincronizar ou migrar e clique com o botão direito no objeto de destino para visualizar as Configure Objects and Advanced Settings (após a visualização, cancele a tarefa; não é necessário prosseguir). Para mais informações, consulte Create a similar job e Modify synchronization objects.

  • Modifique as instruções de filtro

    • A tarefa atual ainda não foi configurada: retorne à etapa Selected Objects. Na área Filter Conditions, expanda os objetos a sincronizar ou migrar e clique com o botão direito no objeto de destino para modificar as Configure Objects and Advanced Settings.

    • A tarefa atual está configurada e em execução:

      • Tarefa de migração: tarefas de migração não permitem modificar as condições de filtro. É necessário reconfigurar a tarefa.

      • Tarefa de sincronização: use o recurso Modify Sync Objects para acessar a etapa Selected Objects. Na área Filter Conditions, expanda os objetos a sincronizar e clique com o botão direito no objeto de destino para modificar as Configure Objects and Advanced Settings. Em seguida, siga as instruções para concluir a configuração subsequente da tarefa. Para mais informações, consulte Modify synchronization objects.

Erros comuns

Se a condição de filtro inserida estiver incorreta, a tarefa pode retornar os erros a seguir. Corrija os erros com base na mensagem de erro específica e em Follow-up operations.

Nota

A expressão regular ((.*)?) na mensagem de erro representa uma variável.

Código de erro

Mensagem de erro

Descrição

DTS-RETRY-ERR-0070

In process of processing data (.)? failed (.)? Syntax error in SQL statement

O formato do campo de filtro configurado para o objeto de sincronização está incorreto.

DTS-RETRY-ERR-0145

Unknown column (.*)? in

O campo definido na condição de filtro da tarefa atual não existe no banco de dados de origem.

DTS-RETRY-ERR-0147

You have an error in your SQL syntax

O campo definido na condição de filtro da tarefa atual não existe no banco de dados de origem.

DTS-RETRY-ERR-0188

null value in column (.*)? violates not-null constraint

Uma coluna com restrição NOT NULL no destino foi filtrada, ou a origem não possui o valor de coluna correspondente.

DTS-RETRY-ERR-0276

if (.*)? is specified it must not be empty

O valor mapeado para a coluna _id no Elasticsearch está vazio. É necessário filtrar os dados com valores vazios.

Perguntas frequentes

  • Por que a condição de filtro que inseri não tem efeito?

    A instrução da condição de filtro está incorreta, ou a tarefa atual é uma tarefa incremental com banco de dados de origem MongoDB (que não aceita condições de filtro).

  • Qual é o escopo de aplicação após modificar uma condição de filtro?

    • A tarefa atual ainda não foi configurada: quando o banco de dados de origem é MongoDB, as condições de filtro têm efeito apenas na fase completa da tarefa. Nos demais tipos de banco de dados de origem, as condições de filtro têm efeito tanto na fase completa quanto na fase incremental.

    • A tarefa atual está configurada e em execução: quando o banco de dados de origem é MongoDB, as condições de filtro não têm efeito (não suportado). Nos demais tipos de banco de dados de origem, as condições de filtro têm efeito apenas para dados incrementais.

  • O DTS permite filtrar os dados que atendem a certas condições e sincronizar ou migrar os dados restantes para o destino?

    • Quando o tipo do banco de dados de origem é Selected Objects: sim. Insira em Filter Conditions para filtrar as chaves que atendem às condições.

    • Nos demais tipos de banco de dados de origem: não. Defina a condição de filtro oposta para atender aos seus requisitos. Por exemplo, se precisar filtrar os dados cujo campo age seja 25, insira age > 25 or age < 25 em Tair/Redis.

  • Como inserir uma condição de filtro quando há várias chaves a filtrar?

    Use vírgulas (,) como separadores.

  • É possível inserir Prefixes of Keys to Be Filtered Out e Filter Conditions ao mesmo tempo?

    Sim. Tanto as regras de sincronização quanto as de filtro aplicadas às chaves têm efeito.

  • As condições de filtro aceitam chamadas de API?

    Não.

APIs relacionadas

API

Descrição

ConfigureDtsJob

Configure uma tarefa de migração ou sincronização do DTS e defina o parâmetro filter em Dblist para definir as condições de filtro.