Spécifiez une condition SQL lors de la configuration des objets de tâche pour synchroniser ou migrer uniquement les données qui répondent à 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 démarré la configuration d'une tâche et atteint l'étape Configure Objects and Advanced Settings. Pour démarrer la configuration d'une tâche, suivez les instructions de 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).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 peut ne pas produire le résultat attendu.
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.
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.
Lorsque le type de base de données source est différent de Tair/Redis et de MongoDB, si la condition de filtre nécessite des guillemets, utilisez des guillemets simples (').
N'ajoutez pas de point-virgule (;) à la fin d'une condition de filtre. Sinon, la tâche risque d'échouer.
-
Si une opération UPDATE est effectuée sur la base de données source et remplit certaines conditions (la valeur de l'image avant modification répond à la condition de filtre, mais pas celle de l'image après modification), DTS convertit par défaut l'instruction UPDATE en une instruction DELETE et l'exécute dans la base de données de destination.
ImportantDans une instance DTS dont la base de données source est SQL Server, si le champ de filtre 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 filtre configuré est modifiée, le filtrage est effectué sur la base de la valeur antérieure à la modification.
Exemple : supposons que vous ayez configuré la condition de filtre
enabled = 1. DTS synchronisera uniquement les données qui répondent à cette condition. Si le champ de donnéesenabled = 1est modifié enenabled = 0, le système considère qu'il faut d'abord supprimer les donnéesenabled = 1, puis écrire les donnéesenabled = 0. Comme l'opération précédente répond à la condition de filtre, les données seront supprimées ; toutefois, les données suivantes ne seront pas synchronisées car elles ne remplissent pas la condition de filtre. Si vous devez synchroniser à la fois les donnéesenabled = 0etenabled = 1, supprimez la condition de filtre et relancez la synchronisation.
Procédure
La méthode de configuration des conditions de filtre 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 filtre pour des objets individuels
-
À l'étape Configure Objects, déplacez les objets de tâche vers la zone Selected Objects.
RemarqueLorsque le type de base de données source est MongoDB, la granularité des objets de 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.
Cliquez avec le bouton droit sur l'objet cible.
-
Dans la boîte de dialogue qui s'affiche, saisissez la condition de filtre.
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.
RemarquePour plus d'informations sur la syntaxe des conditions de filtre, consultez la section Exemples d'instructions.
Une fois les paramètres configurés, cliquez sur OK.
Suivez les instructions pour terminer la configuration ultérieure de la tâche.
Configurer les conditions de filtre par lot
À l'étape Configure Objects, déplacez les objets de tâche vers la zone Selected Objects.
Dans le coin supérieur droit de la zone Selected Objects, cliquez sur Batch Edit.
-
Dans la zone Select Objects, sélectionnez les objets à modifier (pour définir les conditions de filtre par préfixe).
RemarqueConservez la valeur par défaut pour Select Type.
-
Dans la zone Select Editing Type, cliquez sur l'onglet Filter Conditions.
RemarqueSi le type de base de données source est Tair/Redis, cliquez sur l'onglet Prefixes of Keys to Be Synchronized/Filtered Out.
-
Sélectionnez le Select Edit Mode.
Add : conserve les conditions de filtre existantes de la tâche actuelle et ajoute de nouvelles conditions de filtre.
Overwrite : efface les conditions de filtre existantes de la tâche actuelle et utilise les nouvelles conditions de filtre.
-
Configurez les conditions de filtre.
Lorsque le type de base de données source est Tair/Redis : selon le scénario réel, 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 filtre dans la zone de texte.
Pour les autres types de bases de données source : saisissez la condition de filtre dans la zone de texte.
RemarquePour plus d'informations sur la syntaxe des conditions de filtre, consultez la section Exemples d'instructions.
Une fois les paramètres configurés, cliquez sur OK.
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 Prefixes of Keys to Be Synchronized : |
Seules les données dont les clés commencent par |
|
Exclure un seul préfixe |
Saisissez Prefixes of Keys to Be Filtered Out : |
Les données dont les clés commencent par |
|
Synchroniser plusieurs préfixes |
Saisissez Prefixes of Keys to Be Synchronized : |
Seules les données dont les clés commencent par |
|
Combiner synchronisation et filtrage |
Saisissez Prefixes of Keys to Be Synchronized : Saisissez Prefixes of Keys to Be Filtered Out : |
Seules les données dont les clés commencent par |
Le type de base de données source est MongoDB
|
Type de filtre |
Exemple d'instruction |
Description |
|
Autre |
|
Filtrage par ID utilisateur, où |
La base de données source est d'un autre type
Filter Conditions prend en charge les opérateurs suivants :
=,!=,<,>etin.En cas de doute lors de la saisie des conditions de filtre, consultez d'abord la FAQ.
Exemples d'instructions
Type de filtre | Exemple d'instruction | Description |
Numérique |
| Seules les données dont le champ |
Chaîne |
| Seules les données dont le champ |
Heure |
| Seules les données créées après 2020 sont synchronisées ou migrées. Important
|
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 |
Opérations de suivi
-
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 : utilisez la fonctionnalité Create Similar Task ou Modify Sync Objects 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 ; il n'est pas nécessaire d'aller plus loin). 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é Modify Sync Objects 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 : oui. Vous pouvez saisir les Tair/Redis pour filtrer les clés répondant aux 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 filtrer les données dont le champ
ageest 25, vous pouvez saisirage > 25 or age < 25dans les Prefixes of Keys to Be Filtered Out.
-
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 Filter Conditions et les Prefixes of Keys to Be Synchronized ?
Oui. Les règles de synchronisation et de filtrage des clés sont toutes deux appliquées.
-
Les conditions de filtrage prennent-elles en charge les appels API ?
Non.
API associées
API
Description
Configurez une tâche de migration ou de synchronisation DTS et définissez le paramètre
filterdansDblistpour configurer les conditions de filtrage.