Tous les produits
Search
Centre de documentation

Data Transmission Service:Filtrer les données des tâches avec une condition SQL

Dernière mise à jour :Sep 18, 2026

Spécifiez une condition SQL lors de la configuration des objets d'une tâche pour synchroniser ou migrer uniquement les données qui satisfont cette condition. Cette fonctionnalité s'applique aux scénarios de synchronisation périodique des données, de migration et de partitionnement de tables.

Prérequis

Vous avez lancé la configuration d'une tâche et atteint l'étape Configure Objects and Advanced Settings. Pour lancer la configuration d'une tâche, suivez la procédure décrite dans la rubrique Configurer une tâche de synchronisation des données (nouvelle console).

Limites

  • Les instructions de filtrage complexes ne sont pas prises en charge. Par exemple : COLUMN1 IN (SELECT id FROM table1).

    OLUMN1 IN (SELECT id FROM table1).

  • Si la table ou la collection source contient deux colonnes dont les noms ne diffèrent que par la casse, la tâche de filtrage risque de ne pas produire le résultat attendu.

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

  • Lorsque le type de base de données source est Tair/Redis, seul le filtrage des clés basé sur un préfixe est pris en charge.

    , only prefix-based key filtering is supported.

  • Lorsque le type de base de données source est MongoDB, seules les tâches de synchronisation ou de migration complètes prennent en charge le filtrage conditionnel. La synchronisation ou la migration incrémentielle n'est pas prise en charge.

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

  • Lorsque le type de base de données source est différent de Tair/Redis et de MongoDB, si la condition de filtrage nécessite des guillemets, utilisez des guillemets simples (').

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

  • N'ajoutez pas de point-virgule (;) à la fin d'une condition de filtrage. Dans le cas contraire, la tâche pourrait échouer.

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

  • Si une opération UPDATE est effectuée sur la base de données source et satisfait certaines conditions (la valeur de l'image avant modification satisfait la condition de filtrage, mais pas celle de l'image après modification), DTS convertit par défaut l'instruction UPDATE en instruction DELETE et l'exécute dans la base de données de destination.

    Important

    Dans une instance DTS dont la base de données source est SQL Server, si le champ de filtrage n'est pas une colonne d'index cluster, la logique de filtrage ne s'applique pas.

  • Le mécanisme de filtrage de DTS est un pré-filtrage. Si la valeur du champ de filtrage configuré change, le filtrage est effectué sur la valeur antérieure au changement.

    Exemple : supposons que vous ayez configuré la condition de filtrage enabled = 1. DTS synchronisera uniquement les données satisfaisant cette condition. Si le champ de données enabled = 1 est modifié en enabled = 0, le système considère qu'il faut d'abord supprimer les données enabled = 1 puis écrire les données enabled = 0. Étant donné que l'opération précédente satisfait la condition de filtrage, les données seront supprimées ; toutefois, les données suivantes ne seront pas synchronisées car elles ne satisfont pas la condition de filtrage. Si vous devez synchroniser à la fois les données enabled = 0 et enabled = 1, supprimez la condition de filtrage et relancez la synchronisation.

Procédure

Remarque

La méthode de configuration des conditions de filtrage dépend du type de base de données source. Elle se divise en trois catégories : Tair/Redis, MongoDB et les autres types de bases de données.

Configurer les conditions de filtrage pour des objets individuels

  1. À l'étape Configure Objects, déplacez les objets de la tâche vers la zone Selected Objects.

    Remarque

    Lorsque le type de base de données source est MongoDB, la granularité des objets de la tâche doit être au niveau de la collection. Lorsque le type de base de données source est Tair/Redis, la granularité doit être au niveau de la base de données Redis. Pour les autres types de bases de données source, la granularité doit être au niveau de la table.

  2. Cliquez avec le bouton droit sur l'objet cible.

  3. Dans la boîte de dialogue qui s'affiche, saisissez la condition de filtrage.

    • Lorsque le type de base de données source est Tair/Redis : dans la boîte de dialogue Edit Schema qui s'affiche, saisissez les Prefixes of Keys to Be Synchronized (liste d'autorisation) ou les Prefixes of Keys to Be Filtered Out (liste de blocage).

    • Lorsque le type de base de données source est MongoDB : dans la boîte de dialogue Edit Table qui s'affiche, saisissez les Filter Conditions.

    • Pour les autres types de bases de données source : dans la boîte de dialogue Edit Table qui s'affiche, saisissez les Filter Conditions.

    Remarque

    Pour plus d'informations sur la syntaxe des conditions de filtrage, consultez la section Exemples d'instructions.

  4. Une fois les paramètres configurés, cliquez sur OK.

  5. Suivez les instructions pour terminer la configuration ultérieure de la tâche.

Configurer les conditions de filtrage par lot

  1. À l'étape Configure Objects, déplacez les objets de la tâche vers la zone Selected Objects.

  2. Dans le coin supérieur droit de la zone Selected Objects, cliquez sur Batch Edit.

  3. Dans la zone Select Objects, sélectionnez les objets à modifier (pour définir les conditions de filtrage par préfixe).

    Remarque

    Conservez la valeur par défaut pour Select Type.

  4. Dans la zone Select Editing Type, cliquez sur l'onglet Filter Conditions.

    Remarque

    Si le type de base de données source est Tair/Redis, cliquez sur l'onglet Prefixes of Keys to Be Synchronized/Filtered Out.

  5. Sélectionnez le Select Edit Mode.

    • Add : conserve les conditions de filtrage existantes de la tâche actuelle et ajoute de nouvelles conditions de filtrage.

    • Overwrite : efface les conditions de filtrage existantes de la tâche actuelle et utilise les nouvelles conditions de filtrage.

  6. Configurez les conditions de filtrage.

    • Lorsque le type de base de données source est Tair/Redis : selon le scénario, sélectionnez Prefixes of Keys to Be Synchronized ou Prefixes of Keys to Be Filtered Out, puis saisissez le préfixe correspondant.

    • Lorsque le type de base de données source est MongoDB : saisissez la condition de filtrage dans la zone de texte.

    • Pour les autres types de bases de données source : saisissez la condition de filtrage dans la zone de texte.

    Remarque

    Pour plus d'informations sur la syntaxe des conditions de filtrage, consultez la section Exemples d'instructions.

  7. Une fois les paramètres configurés, cliquez sur OK.

  8. Suivez les instructions pour terminer la configuration ultérieure de la tâche.

Exemples d'instructions

Le type de base de données source est Tair/Redis

Type de filtre

Exemple d'instruction

Description

Synchroniser un seul préfixe

Saisissez les Prefixes of Keys to Be Synchronized : dtsnew

Synchronisez uniquement les données dont les clés commencent par dtsnew parmi les objets à synchroniser vers la destination.

Exclure un seul préfixe

Saisissez les Prefixes of Keys to Be Filtered Out : dtstest

Excluez les données dont les clés commencent par dtstest parmi les objets à synchroniser, et synchronisez les données restantes vers la destination.

Synchroniser plusieurs préfixes

Saisissez les Prefixes of Keys to Be Synchronized : dtsnew,dtsold

Synchronisez uniquement les données dont les clés commencent par dtsnew ou dtsold parmi les objets à synchroniser vers la destination.

Combiner synchronisation et filtrage

Saisissez les Prefixes of Keys to Be Synchronized : dts

Saisissez les Prefixes of Keys to Be Filtered Out : dtstest

Synchronisez uniquement les données dont les clés commencent par dts mais ne commencent pas par dtstest parmi les objets à synchroniser vers la destination.

Le type de base de données source est MongoDB

Type de filtre

Exemple d'instruction

Description

Autre

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

Filtrage par ID utilisateur, où $gt signifie « supérieur à » et $lte signifie « inférieur ou égal à ». Les instructions prises en charge par les conditions de filtrage MongoDB diffèrent des instructions WHERE SQL standard. Pour plus d'informations, consultez la page SQL to MongoDB mapping.

La base de données source est d'un autre type

Remarque
  • Les Filter Conditions prennent en charge les opérateurs suivants : =, !=, <, > et in.

  • Si vous avez des questions lors de la saisie des conditions de filtrage, consultez d'abord la section FAQ.

Exemples d'instructions

Type de filtre

Exemple d'instruction

Description

Numérique

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

Synchronisez ou migrez uniquement les données dont le champ id est supérieur à 100 et inférieur ou égal à 200, ou dont le champ id est 1, 2 ou 3.

Chaîne

address in('hangzhou','shanghai')

Synchronisez ou migrez uniquement les données dont le champ address est hangzhou ou shanghai.

Heure

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

Synchronisez ou migrez uniquement les données créées après 2020.

Important
  • La saisie de create_time>'2020' n'est pas prise en charge.

  • Lorsque DTS filtre les données de type heure, il utilise le fuseau horaire GMT+8. Si vos données horaires contiennent des informations de fuseau horaire, convertissez l'heure dans la condition de filtrage en heure GMT+8 correspondante, puis saisissez-la dans Filter Conditions.

Types pris en charge

Base de données

Types de données pris en charge

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

Étapes suivantes

  • Afficher les instructions de filtrage

    • La tâche actuelle n'est pas configurée : revenez à l'étape Configure Objects and Advanced Settings. Dans la zone Selected Objects, développez les objets à synchroniser ou à migrer, puis cliquez avec le bouton droit sur l'objet cible pour afficher les Filter Conditions.

    • La tâche actuelle est configurée et en cours d'exécution : vous pouvez utiliser la fonctionnalité Créer une tâche similaire ou Modifier les objets de synchronisation pour accéder à l'étape Configure Objects and Advanced Settings. Dans la zone Selected Objects, développez les objets à synchroniser ou à migrer, puis cliquez avec le bouton droit sur l'objet cible pour afficher les Filter Conditions (après consultation, annulez la tâche ; inutile de poursuivre). Pour plus d'informations, consultez les rubriques Créer une tâche similaire et Modifier les objets de synchronisation.

  • Modifier les instructions de filtrage

    • La tâche actuelle n'est pas configurée : revenez à l'étape Configure Objects and Advanced Settings. Dans la zone Selected Objects, développez les objets à synchroniser ou à migrer, puis cliquez avec le bouton droit sur l'objet cible pour modifier les Filter Conditions.

    • La tâche actuelle est configurée et en cours d'exécution :

      • Tâche de migration : les tâches de migration ne permettent pas de modifier les conditions de filtrage. Vous devez reconfigurer la tâche.

      • Tâche de synchronisation : utilisez la fonctionnalité Modifier les objets de synchronisation pour accéder à l'étape Configure Objects and Advanced Settings. Dans la zone Selected Objects, développez les objets à synchroniser, puis cliquez avec le bouton droit sur l'objet cible pour modifier les Filter Conditions, et suivez les instructions pour terminer la configuration ultérieure de la tâche. Pour plus d'informations, consultez la rubrique Modifier les objets de synchronisation.

Erreurs courantes

Si la condition de filtrage que vous avez saisie est incorrecte, la tâche peut renvoyer les erreurs suivantes. Corrigez les erreurs en fonction du message d'erreur spécifique et des Étapes suivantes.

Remarque

L'expression régulière ((.*)?) dans le message d'erreur représente une variable.

Code d'erreur

Message d'erreur

Description

DTS-RETRY-ERR-0070

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

Le format du champ de filtrage configuré pour l'objet de synchronisation est incorrect.

DTS-RETRY-ERR-0145

Unknown column (.*)? in

Le champ configuré dans la condition de filtrage de la tâche actuelle n'existe pas dans la base de données source.

DTS-RETRY-ERR-0147

You have an error in your SQL syntax

Le champ configuré dans la condition de filtrage de la tâche actuelle n'existe pas dans la base de données source.

DTS-RETRY-ERR-0188

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

Une colonne avec une contrainte NOT NULL sur la destination est filtrée, ou la source ne possède pas de valeur de colonne correspondante.

DTS-RETRY-ERR-0276

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

La valeur mappée à la colonne _id dans Elasticsearch est vide. Vous devez filtrer les données avec des valeurs vides.

FAQ

  • Pourquoi la condition de filtrage que j'ai saisie ne prend-elle pas effet ?

    L'instruction de condition de filtrage est incorrecte, ou la tâche actuelle est une tâche incrémentielle avec une base de données source MongoDB (qui ne prend pas en charge les conditions de filtrage).

  • Quelle est la portée effective après modification d'une condition de filtrage ?

    • La tâche actuelle n'est pas configurée : lorsque la base de données source est MongoDB, les conditions de filtrage ne prennent effet que pendant la phase de tâche complète. Lorsque la base de données source est d'un autre type, les conditions de filtrage prennent effet dans les phases de tâche complète et incrémentielle.

    • La tâche actuelle est configurée et en cours d'exécution : lorsque la base de données source est MongoDB, les conditions de filtrage ne prennent pas effet (non prises en charge). Lorsque la base de données source est d'un autre type, les conditions de filtrage ne prennent effet que pour les données incrémentielles.

  • DTS prend-il en charge le filtrage des données satisfaisant certaines conditions et la synchronisation ou la migration des données restantes vers la destination ?

    • Lorsque le type de base de données source est Tair/Redis : oui. Vous pouvez saisir les Prefixes of Keys to Be Filtered Out pour exclure les clés satisfaisant les conditions.

    • Lorsque la base de données source est d'un autre type : non. Vous pouvez définir la condition de filtrage opposée pour répondre à vos besoins. Par exemple, si vous devez exclure les données dont le champ age est 25, vous pouvez saisir age > 25 or age < 25 dans les Filter Conditions.

  • Comment saisir une condition de filtrage s'il y a plusieurs clés à filtrer ?

    Utilisez des virgules (,) comme séparateurs.

  • Puis-je saisir à la fois les Prefixes of Keys to Be Synchronized et les Prefixes of Keys to Be Filtered Out ?

    Oui. Les règles de synchronisation et de filtrage des clés s'appliquent toutes les deux.

  • Les conditions de filtrage prennent-elles en charge les appels API ?

    Non.

API associées

API

Description

ConfigureDtsJob

Configurez une tâche de migration ou de synchronisation DTS et définissez le paramètre filter dans Dblist pour configurer les conditions de filtrage.