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 de sélection dans la conversion de schémas DMS
La conversion de schéma DMS convertit les schémas de base de données d'un moteur à un autre. Vous utilisez des règles de sélection pour contrôler les objets de base de données sur lesquels DMS Schema Conversion agit lors d'opérations telles que l'évaluation, la conversion et l'exportation. Une règle de sélection est un objet JSON que vous transmettez via le SelectionRules paramètre (ou --selection-rules dans la AWS CLI). Sans règle de sélection, une opération n'a aucune raison d'agir. Avec une règle, vous pouvez étendre l'opération à un seul objet, à un schéma complet, à une base de données complète (pour les sources Microsoft SQL Server et SAP ASE (Sybase ASE)) ou à un groupe d'objets correspondant à un modèle.
Note
Lorsque vous utilisez la console AWS de gestion, DMS Schema Conversion construit automatiquement des règles de sélection en fonction de vos choix dans l'interface utilisateur du projet de migration. Il vous suffit d'écrire des règles de sélection directement lorsque vous utilisez l'API ou la AWS CLI de conversion de schéma DMS.
Vous utilisez la même forme de règle à la fois du côté source et du côté cible d'un projet de migration. Le server-name champ du localisateur d'objets indique si la règle cible le fournisseur de données source ou le fournisseur de données cible. Un projet de migration unique utilise généralement les deux types de règles : règles sources pour l'évaluation et la conversion ; règles cibles pour l'exportation SQL.
Format des règles de sélection
Un document de règles de sélection est un objet JSON comportant un seul rules tableau. Chaque entrée du tableau correspond à une règle, et chaque règle doit contenir tous les champs suivants.
| Paramètre | Value | Description |
|---|---|---|
rule-type |
selection |
Valeur qui identifie le type de règle. Pour toutes les règles de sélection, définissez ce paramètre surselection. Paramètre obligatoire. |
rule-id |
Une valeur numérique (entier). | Identifiant numérique unique pour la règle. Paramètre obligatoire. |
rule-name |
Valeur alphanumérique. | Nom unique pour identifier la règle. Paramètre obligatoire. |
rule-action |
explicit, include ou exclude |
Valeur qui détermine la manière dont le localisateur d'objets est interprété. Consultez Actions de règle. Paramètre obligatoire. |
object-locator |
Objet JSON contenant des clés de localisation spécifiques au moteur. | Objet qui identifie les objets de base de données auxquels s'applique la règle. Consultez Hiérarchie des localisateurs d'objets. Paramètre obligatoire. |
L'exemple minimal suivant cible un schéma sur un serveur source.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name" } } ] }
Note
Lorsque vous utilisez la AWS CLI, vous pouvez transmettre les règles de sélection de la manière suivante. Il s'agit d'une fonctionnalité AWS CLI standard qui fonctionne avec n'importe quel paramètre de chaîne.
-
En ligne :
--selection-rules '{"rules":[...]}'(utilisez des guillemets simples pour éviter d'échapper aux guillemets doubles JSON) -
Chemin relatif :
--selection-rules file://example-rules.json -
Trajectoire absolue :
--selection-rules file:///tmp/example-rules.json
Toutes les valeurs des champs à l'intérieur object-locator doivent être des chaînes non vides. Une chaîne vide (par exemple,"schema-name": "") est rejetée avec l'erreur.
Note
La database-name clé est valide uniquement pour les sources Microsoft SQL Server et SAP ASE (Sybase ASE). L'envoi database-name d'un localisateur pour tout autre moteur source est rejeté en tant que clé non prise en charge.
Écriture de règles
Hiérarchie des localisateurs d'objets
object-locatorIdentifie un ou plusieurs objets de base de données par le biais d'une hiérarchie de clés spécifiques au moteur. Chaque touche réduit la portée ; omettez une touche de niveau inférieur pour l'élargir. La hiérarchie dépend du moteur source :
-
Microsoft SQL Server et SAP ASE (Sybase ASE) : clé
server-name→database-name→schema-name→au niveau de l'objet (par exemple,).table-nameCes moteurs disposent d'undatabase-nameniveau supplémentaire entre le serveur et le schéma. -
Tous les autres moteurs (Oracle, IBM Db2 pour et tous les moteurs cibles : PostgreSQL z/OS, Aurora PostgreSQL, MySQL, Aurora MySQL et IBM Db2 LUW) : clé au niveau de l'objet.
server-name→schema-name→Ces moteurs n'ont aucundatabase-nameniveau ; le schéma est le conteneur supérieur situé juste en dessousserver-name.
L'exemple suivant sélectionne une table Microsoft SQL Server spécifique.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "schema_name", "table-name": "table_name" } } ] }
Pour étendre le champ d'application à l'ensemble du schéma, omettez la clé au niveau des feuilles. La règle s'applique ensuite à tous les types d'objets adressables de ce schéma, y compris les tables, les vues, les procédures, les fonctions, les séquences et tout autre objet exposé par le moteur source.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "schema_name" } } ] }
Les clés de localisation que vous pouvez utiliser dépendent du moteur source ou cible. Pour la référence clé complète par moteur, voirClés de localisation d'objets par base de données.
Règles source et règles cibles
Aucun rule-type champ explicite ne désigne une règle comme « source » ou « cible ». Vous contrôlez entièrement la distinction par la server-name valeur indiquée dans object-locator : si elle server-name correspond à votre fournisseur de données source, la règle cible l'arbre de métadonnées source ; si elle correspond à votre fournisseur de données cible, la règle cible l'arbre de métadonnées cible.
Car server-name vous pouvez utiliser soit :
-
La valeur du nom du serveur configurée dans le fournisseur de données. Il s'agit généralement d'un nom d'hôte ou d'une adresse IP, mais il doit correspondre exactement à la valeur stockée dans le fournisseur de données. Il ne s'agit pas d'un nom DNS ou d'une adresse IP différent correspondant à la même machine.
-
L'ID de ressource du fournisseur de données : le dernier segment de son ARN (par exemple, si l'ARN est le cas
arn:aws:dms:us-east-1:111122223333:data-provider:EXAMPLEABCDEFGHIJKLMNOPQRS, l'ID de ressource estEXAMPLEABCDEFGHIJKLMNOPQRS).
Actions de règle
Utilisez le rule-action champ pour spécifier comment DMS Schema Conversion interprète les valeurs contenues dans le localisateur d'objets. Vous ne pouvez utiliser des caractères génériques qu'avec include et. exclude
Value |
Comportement |
Contexte d’utilisation |
|---|---|---|
|
Sélectionne tous les objets dont le nom correspond au modèle. Supporte |
À utiliser pour associer un groupe d'objets ayant un modèle de dénomination commun. |
|
Supprime les objets de l'ensemble déjà sélectionné selon |
À utiliser pour distinguer les exceptions d'un cadre plus large |
|
Sélectionne exactement l'objet nommé. Chaque valeur de localisation, y compris |
À utiliser lorsque vous connaissez le nom exact de chaque objet sur lequel vous souhaitez agir. |
Note
Certaines opérations n'acceptent que les "explicit" règles et ne prennent pas en charge "include" ou"exclude". Consultez la référence AWS d'API pour l'opération spécifique afin de vérifier quelles actions de règle elle prend en charge.
Référence du localisateur d'objets
Clés de localisation d'objets par base de données
Les onglets suivants indiquent les clés de localisation pour chaque base de données prise en charge.
Noms des catégories par moteur
La category-name valeur d'une règle de sélection cible une classe d'objets entière plutôt que des objets individuels. Les noms de catégories sont spécifiques au moteur et distinguent les majuscules et minuscules. L'acceptation d'une opération category-name dépend de l'opération. Vérifiez la référence d'AWS API de l'opération que vous utilisez. Les onglets ci-dessous couvrent à la fois les moteurs source et cible.
Important
L'envoi d'un nom de catégorie d'un moteur à un projet configuré pour un autre moteur renvoie une erreur.
Exemples de règles de sélection
Les exemples suivants montrent comment écrire des règles de sélection pour des scénarios de migration courants. Chaque exemple utilise la valeur de --selection-rules paramètre que vous transmettriez aux opérations de l'API de conversion de schéma DMS telles que StartMetadataModelConversion ouStartMetadataModelAssessment.
Sélectionnez une table spécifique pour la conversion à partir d'une source Microsoft SQL Server. Microsoft SQL Server nécessite database-name en plus deschema-name.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "schema_name", "table-name": "table_name" } } ] }
Sélectionnez tous les objets d'un schéma Oracle en omettant la clé au niveau de l'objet. Oracle n'a aucun database-name niveau ; le schéma est le conteneur supérieur situé en dessousserver-name.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name" } } ] }
Les vues Oracle sont traitées à l'table-nameaide de"table-type": "view". Il n'y a pas de view-name clé séparée.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name", "table-name": "view_name", "table-type": "view" } } ] }
Sélectionnez une procédure stockée spécifique dans un IBM Db2 comme z/OS source. IBM Db2 pour les z/OS utilisations procedure-name et passe directement de server-name schema-name à sans database-name niveau.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name", "procedure-name": "procedure_name" } } ] }
Sélectionnez toutes les procédures d'un schéma SAP ASE (Sybase ASE) en les utilisant % comme caractère générique pour. procedure-name SAP ASE (Sybase ASE) nécessite database-name entre server-name etschema-name.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "%" } } ] }
%À utiliser pour faire correspondre plusieurs tables par préfixe. Cet exemple sélectionne toutes les tables dont le nom commence parFact_.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "table-name": "Fact_%" } } ] }
Incluez tous les objets dans un schéma Oracle, puis excluez les tables dont le nom commence parTMP_. Les règles sont évaluées dans rule-id l'ordre ; exclude elles ont priorité lorsqu'elles correspondent.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "schema-name": "schema_name" } }, { "rule-type": "selection", "rule-id": "2", "rule-name": "rule_name", "rule-action": "exclude", "object-locator": { "server-name": "source_server", "schema-name": "schema_name", "table-name": "TMP_%" } } ] }
Utilisez plusieurs explicit règles dans un même document pour sélectionner un ensemble spécifique de procédures par son nom.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_A" } }, { "rule-type": "selection", "rule-id": "2", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_B" } }, { "rule-type": "selection", "rule-id": "3", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_C" } } ] }
Utilisez une include règle correspondant à chaque procédure dont le nom commence parPROC_, puis une exclude règle à supprimer PROC_TEST de cet ensemble. Une exclude règle doit suivre une include règle ; une règle autonome n'excludea aucun effet.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_%" } }, { "rule-type": "selection", "rule-id": "2", "rule-name": "rule_name", "rule-action": "exclude", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_TEST" } } ] }