Todos los productos
Search
Centro de documentos

Data Transmission Service:Filtrar datos de tareas con una condición SQL

Última actualización: Sep 18, 2026

Especifique una condición SQL durante la configuración de los objetos de la tarea para sincronizar o migrar únicamente los datos que cumplan dicha condición. Esta función es compatible con escenarios de sincronización periódica de datos, migración y división de tablas.

Requisitos previos

Debe haber iniciado la configuración de una tarea y encontrarse en el paso Configure Objects and Advanced Settings. Para iniciar la configuración de una tarea, consulte Configure a data synchronization task (new console).

Limitaciones

  • No se admiten instrucciones de filtro complejas. Por ejemplo, COLUMN1 IN (SELECT id FROM table1).

    OLUMN1 IN (SELECT id FROM table1).

  • Si la tabla o colección de origen contiene dos columnas cuyos nombres solo difieren en mayúsculas y minúsculas, es posible que el filtrado de la tarea no genere el resultado esperado.

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

  • Cuando el tipo de base de datos de origen es Tair/Redis, solo se admite el filtrado de claves basado en prefijos.

    , only prefix-based key filtering is supported.

  • Cuando el tipo de base de datos de origen es MongoDB, solo las tareas de sincronización o migración completa admiten el filtrado condicional. No se admite la sincronización ni la migración incremental.

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

  • Cuando el tipo de base de datos de origen es distinto de Tair/Redis y MongoDB, utilice comillas simples (') si la condición de filtro requiere comillas.

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

  • No agregue un punto y coma (;) al final de una condición de filtro. De lo contrario, la tarea podría fallar.

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

  • Si se ejecuta una operación UPDATE en la base de datos de origen y esta cumple ciertas condiciones (el valor de la imagen anterior cumple la condición de filtro, pero el de la imagen posterior no), DTS convierte la instrucción UPDATE en una instrucción DELETE de forma predeterminada y la ejecuta en la base de datos de destino.

    Importante

    En una instancia de DTS cuya base de datos de origen es SQL Server, la lógica de filtrado no surte efecto si el campo de filtro no es una columna de índice agrupado.

  • El mecanismo de filtrado de DTS es un prefiltrado. Si cambia el valor del campo de filtro configurado, el filtrado se realiza con base en el valor previo al cambio.

    Ejemplo: suponga que configuró la condición de filtro enabled = 1. DTS solo sincronizará los datos que cumplan esta condición. Si el campo de datos enabled = 1 se modifica a enabled = 0, el sistema interpreta que primero se eliminan los datos enabled = 1 y luego se escriben los datos enabled = 0. Como la operación previa cumple la condición de filtro, los datos se eliminarán; sin embargo, los datos posteriores no se sincronizarán porque no cumplen dicha condición. Si necesita sincronizar tanto los datos enabled = 0 como los enabled = 1, elimine la condición de filtro y vuelva a sincronizar.

Procedimiento

Nota

El método de configuración de las condiciones de filtro depende del tipo de base de datos de origen. Se divide en tres categorías: Tair/Redis, MongoDB y otros tipos de bases de datos.

Configurar condiciones de filtro para objetos individuales

  1. En el paso Configure Objects, mueva los objetos de la tarea al área Selected Objects.

    Nota

    Cuando el tipo de base de datos de origen es MongoDB, la granularidad de los objetos de la tarea debe ser a nivel de colección. Cuando el tipo de base de datos de origen es Tair/Redis, la granularidad debe ser a nivel de Redis DB. Cuando la base de datos de origen es de otro tipo, la granularidad debe ser a nivel de tabla.

  2. Haga clic derecho en el objeto de destino.

  3. Introduzca la condición de filtro en el cuadro de diálogo que aparece.

    • Cuando el tipo de base de datos de origen es Tair/Redis: introduzca los Prefixes of Keys to Be Synchronized (lista de permitidos) o los Prefixes of Keys to Be Filtered Out (lista de bloqueados) en el cuadro de diálogo Edit Schema que aparece.

    • Cuando el tipo de base de datos de origen es MongoDB: introduzca las Filter Conditions en el cuadro de diálogo Edit Table que aparece.

    • Cuando la base de datos de origen es de otro tipo: introduzca las Filter Conditions en el cuadro de diálogo Edit Table que aparece.

    Nota

    Para obtener información sobre la sintaxis de las condiciones de filtro, consulte Sample statements.

  4. Una vez completada la configuración, haga clic en OK.

  5. Siga las indicaciones para completar el resto de la configuración de la tarea.

Configurar condiciones de filtro por lotes

  1. En el paso Configure Objects, mueva los objetos de la tarea al área Selected Objects.

  2. En la esquina superior derecha del área Selected Objects, haga clic en Batch Edit.

  3. En el cuadro Select Objects, seleccione los objetos que desea editar (para establecer las condiciones de filtro por prefijo).

    Nota

    Conserve el valor predeterminado de Select Type.

  4. En el área Select Editing Type, haga clic en la pestaña Filter Conditions.

    Nota

    Si el tipo de base de datos de origen es Tair/Redis, haga clic en la pestaña Prefixes of Keys to Be Synchronized/Filtered Out.

  5. Seleccione Select Edit Mode.

    • Add: conserva las condiciones de filtro actuales de la tarea y agrega nuevas condiciones.

    • Overwrite: borra las condiciones de filtro actuales de la tarea y utiliza las nuevas.

  6. Configure las condiciones de filtro.

    • Cuando el tipo de base de datos de origen es Tair/Redis: según el escenario real, seleccione Prefixes of Keys to Be Synchronized o Prefixes of Keys to Be Filtered Out e introduzca el prefijo correspondiente.

    • Cuando el tipo de base de datos de origen es MongoDB: introduzca la condición de filtro en el cuadro de texto.

    • Cuando la base de datos de origen es de otro tipo: introduzca la condición de filtro en el cuadro de texto.

    Nota

    Para obtener información sobre la sintaxis de las condiciones de filtro, consulte Sample statements.

  7. Una vez completada la configuración, haga clic en OK.

  8. Siga las indicaciones para completar el resto de la configuración de la tarea.

Instrucciones de ejemplo

El tipo de base de datos de origen es Tair/Redis

Tipo de filtro

Instrucción de ejemplo

Descripción

Sincronizar un solo prefijo

Introduzca los Prefixes of Keys to Be Synchronized: dtsnew

Sincroniza únicamente los datos cuyas claves comiencen con dtsnew entre los objetos que se sincronizarán con el destino.

Filtrar un solo prefijo

Introduzca los Prefixes of Keys to Be Filtered Out: dtstest

Filtra los datos cuyas claves comiencen con dtstest entre los objetos por sincronizar y envía el resto al destino.

Sincronizar varios prefijos

Introduzca los Prefixes of Keys to Be Synchronized: dtsnew,dtsold

Sincroniza únicamente los datos cuyas claves comiencen con dtsnew o dtsold entre los objetos que se sincronizarán con el destino.

Combinar sincronización y filtrado

Introduzca los Prefixes of Keys to Be Synchronized: dts

Introduzca los Prefixes of Keys to Be Filtered Out: dtstest

Sincroniza únicamente los datos cuyas claves comiencen con dts pero no con dtstest entre los objetos que se sincronizarán con el destino.

El tipo de base de datos de origen es MongoDB

Tipo de filtro

Instrucción de ejemplo

Descripción

Otro

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

Filtra por identificador de usuario, donde $gt significa mayor que y $lte significa menor o igual que. Las instrucciones que admiten las condiciones de filtro de MongoDB son distintas de las instrucciones WHERE estándar de SQL. Para obtener más información, consulte SQL to MongoDB mapping.

La base de datos de origen es de otro tipo

Nota
  • Filter Conditions admite los siguientes operadores: =, !=, <, > y in.

  • Si tiene dudas al introducir las condiciones de filtro, consulte primero FAQ.

Instrucciones de ejemplo

Tipo de filtro

Instrucción de ejemplo

Descripción

Numérico

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

Sincroniza o migra únicamente los datos cuyo campo id sea mayor que 100 y menor o igual que 200, o bien cuyo campo id sea 1, 2 o 3.

Cadena

address in('hangzhou','shanghai')

Sincroniza o migra únicamente los datos cuyo campo address sea hangzhou o shanghai.

Hora

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

Sincroniza o migra únicamente los datos creados después de 2020.

Importante
  • No se admite introducir create_time>'2020'.

  • Cuando DTS filtra datos de tipo hora, utiliza la zona horaria GMT+8. Si sus datos de hora incluyen información de zona horaria, convierta primero la hora de la condición de filtro a la zona GMT+8 correspondiente y, después, introdúzcala en Filter Conditions.

Tipos compatibles

Base de datos

Tipos de datos compatibles

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

Operaciones posteriores

  • Consultar instrucciones de filtro

    • Si la tarea actual no está configurada: regrese al paso Configure Objects and Advanced Settings. En el área Selected Objects, expanda los objetos que se sincronizarán o migrarán y, a continuación, haga clic derecho en el objeto de destino para consultar las Filter Conditions.

    • Si la tarea actual está configurada y en ejecución: puede usar la función Create Similar Task o Modify Sync Objects para ir al paso Configure Objects and Advanced Settings. En el área Selected Objects, expanda los objetos que se sincronizarán o migrarán y, a continuación, haga clic derecho en el objeto de destino para consultar las Filter Conditions (después de consultarlas, cancele la tarea; no es necesario continuar). Para obtener más información, consulte Create a similar job y Modify synchronization objects.

  • Modificar instrucciones de filtro

    • Si la tarea actual no está configurada: regrese al paso Configure Objects and Advanced Settings. En el área Selected Objects, expanda los objetos que se sincronizarán o migrarán y, a continuación, haga clic derecho en el objeto de destino para modificar las Filter Conditions.

    • Si la tarea actual está configurada y en ejecución:

      • Tarea de migración: las tareas de migración no admiten la modificación de condiciones de filtro. Debe volver a configurar la tarea.

      • Tarea de sincronización: use la función Modify Sync Objects para ir al paso Configure Objects and Advanced Settings. En el área Selected Objects, expanda los objetos que se sincronizarán, haga clic derecho en el objeto de destino para modificar las Filter Conditions y siga las indicaciones para completar el resto de la configuración de la tarea. Para obtener más información, consulte Modify synchronization objects.

Errores comunes

Si la condición de filtro que introdujo es incorrecta, la tarea podría devolver los siguientes errores. Corrija los errores con base en el mensaje específico y en Follow-up operations.

Nota

La expresión regular ((.*)?) del mensaje de error representa una variable.

Código de error

Mensaje de error

Descripción

DTS-RETRY-ERR-0070

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

El formato del campo de filtro configurado para el objeto de sincronización es incorrecto.

DTS-RETRY-ERR-0145

Unknown column (.*)? in

El campo configurado en la condición de filtro de la tarea actual no existe en la base de datos de origen.

DTS-RETRY-ERR-0147

You have an error in your SQL syntax

El campo configurado en la condición de filtro de la tarea actual no existe en la base de datos de origen.

DTS-RETRY-ERR-0188

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

Se filtró una columna con restricción NOT NULL en el destino, o bien el origen no tiene un valor de columna correspondiente.

DTS-RETRY-ERR-0276

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

El valor asignado a la columna _id en Elasticsearch está vacío. Debe filtrar los datos con valores vacíos.

Preguntas frecuentes

  • ¿Por qué no surte efecto la condición de filtro que introduje?

    La instrucción de la condición de filtro es incorrecta, o bien la tarea actual es incremental y tiene una base de datos de origen MongoDB (la cual no admite condiciones de filtro).

  • ¿Cuál es el alcance efectivo después de modificar una condición de filtro?

    • Si la tarea actual no está configurada: cuando la base de datos de origen es MongoDB, las condiciones de filtro solo surten efecto en la fase de tarea completa. Cuando la base de datos de origen es de otro tipo, las condiciones de filtro surten efecto tanto en la fase completa como en la incremental.

    • Si la tarea actual está configurada y en ejecución: cuando la base de datos de origen es MongoDB, las condiciones de filtro no surten efecto (no se admiten). Cuando la base de datos de origen es de otro tipo, las condiciones de filtro solo surten efecto para los datos incrementales.

  • ¿DTS permite filtrar los datos que cumplen ciertas condiciones y sincronizar o migrar el resto al destino?

    • Cuando el tipo de base de datos de origen es Tair/Redis: Sí. Puede introducir los Prefixes of Keys to Be Filtered Out para excluir las claves que cumplan dichas condiciones.

    • Cuando la base de datos de origen es de otro tipo: No. Puede establecer la condición de filtro opuesta para satisfacer sus requisitos. Por ejemplo, si necesita filtrar los datos cuyo campo age sea 25, puede introducir age > 25 or age < 25 en Filter Conditions.

  • ¿Cómo introduzco una condición de filtro si hay varias claves por filtrar?

    Utilice comas (,) como separadores.

  • ¿Puedo introducir tanto los Prefixes of Keys to Be Synchronized como los Prefixes of Keys to Be Filtered Out?

    Sí. Tanto las reglas de sincronización como las de filtrado de claves surten efecto.

  • ¿Las condiciones de filtro admiten llamadas a la API?

    No.

API relacionadas

API

Descripción

ConfigureDtsJob

Configure una tarea de migración o sincronización de DTS y establezca el parámetro filter en Dblist para definir las condiciones de filtro.