Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Règles et actions de transformation
Les actions de transformation permettent de spécifier les transformations que vous souhaitez appliquer au schéma, à la table ou à la vue sélectionné(e). Les règles de transformation sont facultatives.
Limites
Vous ne pouvez pas appliquer plusieurs actions de règle de transformation au même objet (schéma, table, colonne, table-tablespace ou index-tablespace). Vous pouvez appliquer plusieurs actions de règle de transformation à n’importe quel niveau, à condition que chaque action de transformation soit appliquée à un objet différent.
Les noms de table et de colonne sont sensibles à la casse dans les règles de transformation. Par exemple, vous devez fournir les noms de table et de colonne d’une base de données Oracle ou Db2 en majuscules.
Les transformations ne sont pas prises en charge pour les noms de colonne rédigés de droite à gauche.
Les transformations ne peuvent pas être effectuées sur des colonnes dont le nom contient des caractères spéciaux (par exemple, #, \, /, -).
La seule transformation prise en charge pour les colonnes mappées aux types de données BLOB/CLOB consiste à supprimer la colonne sur la cible.
AWS DMS ne prend pas en charge la réplication de deux tables sources vers une seule table cible. AWS DMS réplique les enregistrements de table en table et de colonne en colonne, conformément aux règles de transformation de la tâche de réplication. Les noms des objets doivent être uniques pour éviter tout chevauchement.
Par exemple, une table source possède une colonne nommée
ID
et la table cible correspondante possède une colonne préexistante appeléeid
. Si une règle utilise une instructionADD-COLUMN
pour ajouter une nouvelle colonne appeléeid
, et une instruction SQLite pour remplir la colonne avec des valeurs personnalisées, un objet ambigu en double nomméid
est créé et il n’est pas pris en charge.Lorsque vous créez une règle de transformation, nous vous recommandons d'utiliser le
data-type
paramètre uniquement lorsque les règles de sélection spécifient plusieurs colonnes, par exemple lorsque vous définissezcolumn-name
sur%
. Nous vous déconseillons de l'utiliserdata-type
pour sélectionner une seule colonne.
Valeurs
Pour les règles de mappage de tables qui utilisent le type de règle de transformation, vous pouvez appliquer les valeurs suivantes :
Paramètre | Valeurs possibles | Description |
---|---|---|
rule-type |
transformation |
Valeur qui applique la règle à chaque objet spécifié par la règle de sélection. Utilisez, transformation sauf indication contraire. |
rule-id |
Valeur numérique. | Valeur numérique unique pour identifier la règle. Si vous spécifiez plusieurs règles de transformation pour le même objet (schéma, table, colonne, espace inter-tables ou espace table d'index), AWS DMS applique la règle de transformation avec le rule-id inférieur. |
rule-name |
Valeur alphanumérique. | Nom unique pour identifier la règle. |
object-locator |
Objet avec les paramètres suivants :
|
Nom de chaque schéma, table ou vue, espace de table, espace de table d'index et colonne auxquels la règle s'applique. Vous pouvez utiliser le signe « % » comme caractère générique pour tout ou partie de la valeur de chaque paramètre
En outre, les paramètres
|
rule-action |
|
Transformation à appliquer à l'objet. Toutes les actions de règle de transformation sont sensibles à la casse. La valeur Lorsqu'elle est utilisée avec les paramètres La valeur La valeur Vous ne pouvez pas utiliser une règle Pour une tâche existante, les actions de la règle de transformation qui modifient le schéma de la table cible telles que |
rule-target |
schema , table ,
column , table-tablespace ,
index-tablespace |
Type d'objet que vous transformez. Les valeurs Assurez-vous de spécifier une valeur pour le paramètre que vous spécifiez dans le nom |
value |
Valeur alphanumérique qui suit les règles de dénomination pour le type de cible. | Nouvelle valeur pour les actions qui nécessitent une entrée, par exemple rename . |
old-value |
Valeur alphanumérique qui suit les règles de dénomination pour le type de cible. | Ancienne valeur pour les actions qui ont besoin d'être remplacées, par exemple replace-prefix . |
data-type |
Ou, le nom du type de données de remplacement quand l’ AWS DMS prend en charge les transformations de type de données de colonne pour les types de données DMS suivants :
|
Exemple de paramètre
Ici, la colonne |
expression |
Valeur alphanumérique qui suit la syntaxe SQLite. |
Lorsqu'il est utilisé avec l’ Lorsqu'elle est utilisée avec l’ Notez que seules les expressions sont prises en charge pour ce paramètre. Les opérateurs et les commandes ne sont pas pris en charge. Pour plus d’informations sur l’utilisation des expressions pour les règles de transformation, consultez Utilisation d'expressions de règle de transformation pour définir le contenu d’une colonne. Pour plus d’informations sur les expressions SQLite, consultez Utilisation des fonctions SQLite pour créer des expressions. |
primary-key-def |
Objet avec les paramètres suivants :
|
Ce paramètre peut définir le nom, le type et le contenu d'une clé unique dans la table ou la vue transformée. Il le fait lorsque l’rule-action est définie sur define-primary-key et la rule-target est définie sur table . Par défaut, la clé unique est définie en tant que clé primaire. |
before-image-def |
Objet avec les paramètres suivants :
|
Ce paramètre définit une convention de dénomination pour identifier les colonnes d’image antérieure et spécifie un filtre pour identifier les colonnes source qui peuvent avoir des colonnes d’image antérieure créées pour elles sur la cible. Vous pouvez spécifier ce paramètre lorsque l’ Ne définissez pas les deux Pour
Pour plus d’informations sur la prise en charge de l’image antérieure pour les points de terminaison cibles AWS DMS , consultez : |
Exemples
Exemple Renommer un schéma
L'exemple suivant renomme un schéma Test
de votre source en Test1
dans votre cible.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "schema", "object-locator": { "schema-name": "Test" }, "value": "Test1" } ] }
Exemple Renommer une table
L'exemple suivant renomme une table Actor
de votre source en Actor1
dans votre cible.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table", "object-locator": { "schema-name": "Test", "table-name": "Actor" }, "value": "Actor1" } ] }
Exemple Renommer une colonne
L'exemple suivant renomme une colonne de la table Actor
en remplaçant first_name
dans votre source par fname
dans votre cible.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "4", "rule-name": "4", "rule-action": "rename", "rule-target": "column", "object-locator": { "schema-name": "test", "table-name": "Actor", "column-name" : "first_name" }, "value": "fname" } ] }
Exemple Renommer un espace de table de table Oracle
L'exemple suivant renomme l'espace de table de table nommé SetSpace
d'une table nommée Actor
dans votre source Oracle en SceneTblSpace
dans votre point de terminaison cible Oracle.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Play", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table-tablespace", "object-locator": { "schema-name": "Play", "table-name": "Actor", "table-tablespace-name": "SetSpace" }, "value": "SceneTblSpace" } ] }
Exemple Renommer un espace de table d'index Oracle
L'exemple suivant renomme l'espace de table d'index nommé SetISpace
d'une table nommée Actor
dans votre source Oracle en SceneIdxSpace
dans votre point de terminaison cible Oracle.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Play", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table-tablespace", "object-locator": { "schema-name": "Play", "table-name": "Actor", "table-tablespace-name": "SetISpace" }, "value": "SceneIdxSpace" } ] }
Exemple Ajouter une colonne
Dans l'exemple suivant une colonne datetime
est ajoutée à la table Actor
du schéma test
.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "test", "table-name": "actor" }, "value": "last_updated", "data-type": { "type": "datetime", "precision": 6 } } ] }
Exemple Supprimer une colonne
L'exemple suivant transforme la table nommée Actor
dans votre source pour en supprimer toutes les colonnes commençant par les caractères col
dans votre cible.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "remove-column", "rule-target": "column", "object-locator": { "schema-name": "test", "table-name": "Actor", "column-name": "col%" } }] }
Exemple Convertir en minuscules
L'exemple suivant convertit un nom de table ACTOR
dans votre source en actor
dans votre cible.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "convert-lowercase", "rule-target": "table", "object-locator": { "schema-name": "test", "table-name": "ACTOR" } }] }
Exemple Convertir en majuscules
L'exemple suivant convertit toutes les colonnes de toutes les tables et tous les schémas en les faisant passer de lettres minuscules dans votre source à des lettres majuscules dans votre cible.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "convert-uppercase", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%", "column-name": "%" } } ] }
Exemple Ajouter un préfixe
L'exemple suivant transforme toutes les tables de votre source en leur ajoutant le préfixe DMS_
dans votre cible.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-prefix", "rule-target": "table", "object-locator": { "schema-name": "test", "table-name": "%" }, "value": "DMS_" }] }
Exemple Remplacer un préfixe
L'exemple suivant transforme toutes les colonnes contenant le préfixe Pre_
dans votre source en remplaçant le préfixe par NewPre_
dans votre cible.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "replace-prefix", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%", "column-name": "%" }, "value": "NewPre_", "old-value": "Pre_" } ] }
Exemple Supprimer un suffixe
L'exemple suivant transforme toutes les tables de votre source en leur supprimant le suffixe _DMS
dans votre cible.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "remove-suffix", "rule-target": "table", "object-locator": { "schema-name": "test", "table-name": "%" }, "value": "_DMS" }] }
Exemple Définir une clé primaire
L'exemple suivant définit une clé primaire nommée ITEM-primary-key
sur trois colonnes de la table ITEM
migrée vers votre point de terminaison cible.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "inventory", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "define-primary-key", "rule-target": "table", "object-locator": { "schema-name": "inventory", "table-name": "ITEM" }, "primary-key-def": { "name": "ITEM-primary-key", "columns": [ "ITEM-NAME", "BOM-MODEL-NUM", "BOM-PART-NUM" ] } }] }
Exemple Définir un index unique
L'exemple suivant définit un index unique nommé ITEM-unique-idx
sur trois colonnes de la table ITEM
migrée vers votre point de terminaison cible.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "inventory", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "define-primary-key", "rule-target": "table", "object-locator": { "schema-name": "inventory", "table-name": "ITEM" }, "primary-key-def": { "name": "ITEM-unique-idx", "origin": "unique-index", "columns": [ "ITEM-NAME", "BOM-MODEL-NUM", "BOM-PART-NUM" ] } }] }
Exemple Modification du type de données de la colonne cible
L'exemple suivant remplace le type de données d'une colonne cible nommée SALE_AMOUNT
à partir d'un type de données existant par int8
.
{ "rule-type": "transformation", "rule-id": "1", "rule-name": "RuleName 1", "rule-action": "change-data-type", "rule-target": "column", "object-locator": { "schema-name": "dbo", "table-name": "dms", "column-name": "SALE_AMOUNT" }, "data-type": { "type": "int8" } }
Exemple Ajouter une colonne d'image antérieure
Pour une colonne source appelée emp_no
, la règle de transformation de l'exemple suivant ajoute une nouvelle colonne appelée BI_emp_no
dans la cible.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "employees" }, "rule-action": "add-before-image-columns", "before-image-def": { "column-prefix": "BI_", "column-suffix": "", "column-filter": "pk-only" } } ] }
Ici, l’instruction suivante remplit une colonne BI_emp_no
dans la ligne correspondante avec 1.
UPDATE employees SET emp_no = 3 WHERE BI_emp_no = 1;
Lorsque vous écrivez des mises à jour CDC pour AWS DMS les cibles prises en charge, la BI_emp_no
colonne permet de savoir quelles lignes contiennent des valeurs mises à jour dans la emp_no
colonne.