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.
ImportanteEn 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 datosenabled = 1se modifica aenabled = 0, el sistema interpreta que primero se eliminan los datosenabled = 1y luego se escriben los datosenabled = 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 datosenabled = 0como losenabled = 1, elimine la condición de filtro y vuelva a sincronizar.
Procedimiento
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
-
En el paso Configure Objects, mueva los objetos de la tarea al área Selected Objects.
NotaCuando 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.
Haga clic derecho en el objeto de destino.
-
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.
NotaPara obtener información sobre la sintaxis de las condiciones de filtro, consulte Sample statements.
Una vez completada la configuración, haga clic en OK.
Siga las indicaciones para completar el resto de la configuración de la tarea.
Configurar condiciones de filtro por lotes
En el paso Configure Objects, mueva los objetos de la tarea al área Selected Objects.
En la esquina superior derecha del área Selected Objects, haga clic en Batch Edit.
-
En el cuadro Select Objects, seleccione los objetos que desea editar (para establecer las condiciones de filtro por prefijo).
NotaConserve el valor predeterminado de Select Type.
-
En el área Select Editing Type, haga clic en la pestaña Filter Conditions.
NotaSi 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.
-
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.
-
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.
NotaPara obtener información sobre la sintaxis de las condiciones de filtro, consulte Sample statements.
Una vez completada la configuración, haga clic en OK.
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: |
Sincroniza únicamente los datos cuyas claves comiencen con |
|
Filtrar un solo prefijo |
Introduzca los Prefixes of Keys to Be Filtered Out: |
Filtra los datos cuyas claves comiencen con |
|
Sincronizar varios prefijos |
Introduzca los Prefixes of Keys to Be Synchronized: |
Sincroniza únicamente los datos cuyas claves comiencen con |
|
Combinar sincronización y filtrado |
Introduzca los Prefixes of Keys to Be Synchronized: Introduzca los Prefixes of Keys to Be Filtered Out: |
Sincroniza únicamente los datos cuyas claves comiencen con |
El tipo de base de datos de origen es MongoDB
|
Tipo de filtro |
Instrucción de ejemplo |
Descripción |
|
Otro |
|
Filtra por identificador de usuario, donde |
La base de datos de origen es de otro tipo
Filter Conditions admite los siguientes operadores:
=,!=,<,>yin.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 |
| Sincroniza o migra únicamente los datos cuyo campo |
Cadena |
| Sincroniza o migra únicamente los datos cuyo campo |
Hora |
| Sincroniza o migra únicamente los datos creados después de 2020. Importante
|
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.
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 |
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
agesea 25, puede introducirage > 25 or age < 25en 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 |
|
Configure una tarea de migración o sincronización de DTS y establezca el parámetro |