Les espaces de travail de conversion vous aident à convertir le schéma et les objets de votre base de données source en syntaxe SQL compatible avec votre base de données de destination. Cette page présente les espaces de travail de conversion de Database Migration Service:
La section Objets compatibles avec la conversion automatique du code et du schéma liste les objets Oracle compatibles avec la conversion automatique du schéma.
L'éditeur SQL interactif décrit les objets que vous pouvez modifier directement dans l'éditeur de l'espace de travail de conversion.
Fonctionnalités de conversion assistée par Gemini explique comment intégrer l'assistance de l'IA générative pour accélérer le processus de conversion de schémas.
La section Fichiers de mappage des conversions présente les directives de personnalisation que vous pouvez utiliser pour remplacer les règles de conversion de schéma automatique.
Anciens espaces de travail de conversion décrit les anciens espaces de travail qui ne sont pas compatibles avec l'éditeur SQL interactif.
Que vous utilisiez la conversion automatique des schémas ou que vous créiez un fichier de mappage de conversion supplémentaire, certains types de données ne sont pas compatibles avec les migrations Oracle. Pour en savoir plus, consultez la section Limites connues des types de données.
Conversion automatique du code et des schémas
Lorsque vous créez un espace de travail de conversion, Database Migration Service effectue automatiquement la conversion initiale du schéma. La conversion automatique de schémas est compatible avec un sous-ensemble très spécifique d'objets de base de données Oracle disponibles.
La conversion de code automatisée est compatible avec les objets de base de données Oracle suivants:
Éléments de schéma Oracle compatibles
- Contraintes
- Indexes (uniquement les index créés dans le même schéma que leur table)
- Vues matérialisées
- Types d'objets (prise en charge partielle)
- Séquences
- Synonymes
- Tables
- Vues
Éléments de code Oracle compatibles
- Déclencheurs (au niveau de la table uniquement)
- Packages
- Fonctions
- Procédures stockées
Éditeur SQL interactif
L'éditeur SQL interactif vous permet de modifier la syntaxe PostgreSQL convertie directement dans Database Migration Service. Vous pouvez l'utiliser pour résoudre les problèmes de conversion ou ajuster le schéma pour mieux répondre à vos besoins. Certains objets ne peuvent pas être modifiés dans l'éditeur intégré.
Objets Oracle modifiables
Après avoir converti le code et le schéma de la base de données source, vous pouvez utiliser l'éditeur interactif pour modifier le code SQL généré pour certains types d'objets. L'éditeur est compatible avec les objets Oracle suivants:
- Déclencheurs de table (nécessite une autorisation)
- Vues matérialisées
- Packages
- Fonctions, procédures stockées
- Synonymes
- Vues
- Contraintes
- Index
- Séquences
De plus, certains objets sont convertis, mais ne peuvent pas être modifiés directement dans Database Migration Service. Pour modifier ces objets, vous devez effectuer les mises à jour directement dans la base de données de destination après avoir appliqué le schéma et le code convertis.
Objets non modifiables:
- Types d'objets définis par l'utilisateur
- Tables
- Schémas
Fonctionnalités de conversion optimisées par Gemini
Database Migration Service intègre Gemini pour Google Cloud dans les espaces de travail de conversion pour vous aider à accélérer et à améliorer le processus de conversion dans deux domaines:
Fournissez des fonctionnalités d'explicabilité du code avec l'assistant de conversion: un ensemble d'invites dédiées qui peuvent vous aider à mieux comprendre la logique de conversion, à proposer des solutions aux problèmes de conversion ou à optimiser le code converti.
Accélérez l'application des correctifs aux problèmes de conversion grâce aux suggestions de conversion de code Gemini: un mécanisme permettant au modèle Gemini d'apprendre à mesure que vous corrigez les problèmes de conversion et de suggérer des modifications à d'autres objets défectueux dans l'espace de travail.
Pour en savoir plus sur la conversion assistée par Gemini, consultez les pages suivantes:
Fichiers de mise en correspondance des conversions
Vous pouvez personnaliser la logique de conversion à l'aide d'un fichier de mappage des conversions. Le fichier de mappage de conversion est un fichier texte contenant des instructions précises (appelées directives de conversion) sur la façon dont vos objets Oracle doivent être convertis en objets PostgreSQL.
Directives de conversion compatibles
Database Migration Service accepte les directives de conversion suivantes pour les fichiers de mappage de conversion:
EXPORT_SCHEMA
EXPORT_SCHEMA
est une directive obligatoire pour tous les fichiers de mappage des conversions. Database Migration Service nécessite cette instruction pour s'assurer que vos schémas sources sont convertis en schémas de destination appropriés.
Assurez-vous que vos fichiers de mappage des conversions incluent la ligne suivante:
EXPORT_SCHEMA 1
SCHEMA
Database Migration Service doit pouvoir déterminer quel schéma contient les objets à modifier avec vos directives de conversion.
La directive SCHEMA
entraîne les ajustements suivants au flux de conversion:
- Database Migration Service ne convertit que ce schéma. Si vous devez convertir d'autres schémas dans un même espace de travail de conversion, vous devez importer plusieurs fichiers avec des schémas différents.
- Toutes les autres directives de personnalisation fournies dans votre fichier ne s'appliquent qu'aux objets de ce schéma particulier.
Utilisez le format suivant :
SCHEMA SCHEMA_NAME
Où SCHEMA_NAME correspond au nom de votre schéma dans la base de données source.
- Si vous incluez cette directive dans le fichier de mappage des conversions, toutes les personnalisations ne s'appliquent qu'aux objets contenus dans ce schéma spécifique. Si vous souhaitez personnaliser des objets dans d'autres schémas, vous devez créer plusieurs fichiers de mappage de conversion et les importer dans l'espace de travail de conversion.
- Si vous ignorez cette directive, vous devez fournir des noms de schéma explicites pour les objets modifiés par d'autres directives de conversion.
Par exemple, au lieu d'utiliser
SOURCE_TABLE_NAME
pour la directiveREPLACE_TABLES
, vous devez utiliser"SCHEMA_NAME.SOURCE_TABLE_NAME"
.
DATA_TYPE
Vous pouvez utiliser cette directive pour mapper explicitement tout type de données compatible entre la syntaxe Oracle et PostgreSQL. Cette directive attend une liste de mappages séparés par des virgules. La définition complète doit être fournie sur une seule ligne, mais vous devez inclure plusieurs directives DATA_TYPE
dans votre fichier de configuration. Utilisez le format suivant :
DATA_TYPE ORACLE_DATA_TYPE1:PGSQL_DATA_TYPE1 DATA_TYPE ORACLE_DATA_TYPE2:PGSQL_DATA_TYPE2...
Où ORACLE_DATA_TYPE et PGSQL_DATA_TYPE sont des types de données compatibles avec les versions Oracle et PostgreSQL respectives que vous utilisez dans votre migration. Pour en savoir plus sur les versions compatibles, consultez la section Présentation du scénario.
Exemple :
DATA_TYPE REAL:double precision,SMALLINT:integer
Pour en savoir plus sur les types de données Oracle et PostgreSQL, consultez les ressources suivantes:
- Types de données Oracle dans la documentation Oracle.
- Types de données PostgreSQL dans la documentation PostgreSQL.
MODIFY_TYPE
La directive MODIFY_TYPE
vous permet de contrôler le type de données vers lequel Database Migration Service convertit une colonne spécifique de votre table source.
Cette directive attend une liste de mappages séparés par des virgules.
La définition complète doit être fournie sur une seule ligne, mais vous pouvez inclure plusieurs directives MODIFY_TYPE
dans votre fichier de configuration.
Utilisez le format suivant :
MODIFY_TYPE SOURCE_TABLE_NAME1:COLUMN_NAME:EXPECTED_END_RESULT_DATA_TYPE MODIFY_TYPE SOURCE_TABLE_NAME2:COLUMN_NAME:EXPECTED_END_RESULT_DATA_TYPE...
Où :
- SOURCE_TABLE_NAME est le nom de la table contenant la colonne dont vous souhaitez modifier le type de données.
- COLUMN_NAME correspond au nom de la colonne pour laquelle vous souhaitez personnaliser le mappage des conversions.
- EXPECTED_END_RESULT_DATA_TYPE est le type de données PostgreSQL que vous souhaitez utiliser pour la colonne convertie.
Exemple :
MODIFY_TYPE events:dates_and_times:DATETIME,users:pseudonym:TEXT
PG_INTEGER_TYPE
Par défaut,Database Migration Service convertit les types NUMBER(p,s)
en type DECIMAL(p,s)
PostgreSQL.
Vous pouvez modifier ce comportement avec la directive PG_INTEGER_TYPE
. Définissez sa valeur sur 1
et forcez tous vos types NUMBER
avec précision et échelle (NUMBER(p,s)
) à être convertis en types smallint
, integer
ou bigint
PostgreSQL en fonction du nombre de chiffres de précision.
Incluez le paramètre suivant dans votre fichier de mappage des conversions:
PG_INTEGER_TYPE 1
PG_NUMERIC_TYPE
Définissez cette directive sur 1
si vous souhaitez convertir tous vos types NUMBER
avec précision et échelle (NUMBER(p,s)
) en types real
ou float
PostgreSQL (en fonction de leur nombre de chiffres de précision).
Si vous définissez cette directive sur 0
, vos valeurs NUMBER(p,s)
conservent leur valeur d'origine exacte et utilisent le type de données PostgreSQL interne.
Incluez le paramètre suivant dans votre fichier de mappage des conversions:
PG_NUMERIC_TYPE 1
DEFAULT_NUMERIC
La conversion par défaut des NUMBER
sans précision change si vous utilisez également la
directive PG_INTEGER_TYPE
:
- Si vous utilisez la directive
PG_INTEGER
, lesNUMBER
sans précision sont convertis en valeursDECIMAL
. - Si vous n'utilisez pas la directive
PG_INTEGER
, lesNUMBER
sans précision sont convertis en valeursBIGINT
.
Vous pouvez modifier ce comportement et utiliser la directive DEFAULT_NUMERIC
pour spécifier le type de données à utiliser pour les types NUMBER
sans points de précision spécifiés.
Utilisez le format suivant :
DEFAULT_NUMERIC POSTGRESQL_NUMERIC_DATA_TYPE
Où POSTGRESQL_NUMERIC_DATA_TYPE est l'une des valeurs suivantes: integer
, smallint
ou bigint
.
Exemple :
DEFAULT_NUMERIC integer
REPLACE_COLS
Vous pouvez utiliser la directive REPLACE_COLS
pour renommer des colonnes dans votre schéma converti. Cette directive attend une liste de mappages séparés par des virgules.
Utilisez le format suivant :
REPLACE_COLS SOURCE_TABLE_NAME1(SOURCE1_TABLE1_COLUMN_NAME1:DESTINATION_TABLE1_COLUMN_NAME1,SOURCE_TABLE1_COLUMN_NAME2:DESTINATION_TABLE1_COLUMN_NAME2),SOURCE_TABLE_NAME2(SOURCE_TABLE2_COLUMN_NAME1:DESTINATION_TABLE2_COLUMN_NAME1,SOURCE_TABLE2_COLUMN_NAME2:DESTINATION_TABLE2_COLUMN_NAME2)...
Où :
- SOURCE_TABLE_NAME correspond au nom de la table contenant la colonne dont vous souhaitez modifier le nom.
- SOURCE_COLUMN_NAME correspond au nom de la colonne de votre source dont vous souhaitez modifier le nom.
- DESTINATION_COLUMN_NAME est le nouveau nom que vous attribuez à la colonne que vous souhaitez utiliser dans le schéma converti.
Exemple :
REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname)
REPLACE_TABLES
Vous pouvez utiliser la directive REPLACE_TABLES
pour renommer des tables ou les déplacer vers un nouveau schéma. Cette directive attend une liste de mappages séparés par des espaces. Pour en savoir plus sur la syntaxe de chaque cas d'utilisation, développez les sections suivantes.
Renommer des tables
Pour renommer des tables dans votre schéma converti, utilisez le format suivant:
REPLACE_TABLES SOURCE_TABLE_NAME1:DESTINATION_TABLE_NAME1 SOURCE_TABLE_NAME2:DESTINATION_TABLE_NAME2
Où :
- SOURCE_TABLE_NAME est le nom de la table source que vous souhaitez renommer dans le schéma converti.
- DESTINATION_TABLE_NAME est le nouveau nom de la table que vous souhaitez utiliser dans le schéma converti.
Exemple :
REPLACE_TABLES "events:login_events" "users:platform_users"
Déplacer des tables entre des schémas
Vous pouvez utiliser cette directive pour déplacer des tables entre des schémas en ajoutant le préfixe du schéma au nouveau nom de la table. Ce mécanisme peut être utilisé, quelle que soit la façon dont vous utilisez la directive SCHEMA pour l'ensemble du fichier de conversion. Exemple :
REPLACE_TABLES "events:NEW_SCHEMA_NAME.login_events"
Alias pour personnaliser les types de données
Lorsque vous utilisez des directives de conversion pour modifier la façon dont Database Migration Service convertit différents types de données (par exemple, avec les directives
DATA_TYPE
,
MODIFY_TYPE
ou
PG_NUMERIC_TYPE
), vous pouvez utiliser des alias au lieu de vos types de données SQL sources.
Développez la section suivante pour afficher la liste des alias de type de données compatibles avec Database Migration Service.
Alias de type de données
Alias | Converti en type PostgreSQL |
---|---|
bigint , int8 |
BIGINT |
bool , boolean |
BOOLEAN |
bytea |
BYTEA |
char , character |
CHAR |
character varying , varchar |
VARCHAR |
date |
DATE |
decimal , numeric |
DECIMAL |
double precision , float8 |
DOUBLE PRECISION |
real float4 |
REAL |
int , integer , int4 |
INTEGER |
int2 |
SMALLINT |
interval |
INTERVAL |
json |
JSON |
smallint |
SMALLINT |
text |
TEXT |
time |
TIME |
timestamp |
TIMESTAMP |
timestamptz |
TIMESTAMPTZ |
timetz |
TIMETZ |
uuid |
UUID |
XML |
XML |
Exemple de fichier de mappage des conversions
Consultez l'exemple de fichier de mappage de conversion suivant qui utilise toutes les directives de conversion de schéma compatibles:
EXPORT_SCHEMA 1 SCHEMA root PG_NUMERIC_TYPE 0 PG_INTEGER_TYPE 1 DEFAULT_NUMERIC integer DATA_TYPE NUMBER(4\,0):integer MODIFY_TYPE events:dates_and_times:TIMESTAMP REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname) REPLACE_TABLES events:login_events users:platform_users
Les résultats de l'utilisation de ce fichier sont les suivants:
EXPORT_SCHEMA 1
est une directive obligatoire.SCHEMA root
entraîne les ajustements suivants du flux de conversion :- Database Migration Service ne convertit que les entités du schéma
root
. Aucun autre schéma n'est converti. - Toutes les autres directives de personnalisation de ce fichier ne s'appliquent qu'aux colonnes et aux types de données définis dans le schéma
root
.
- Database Migration Service ne convertit que les entités du schéma
PG_INTEGER_TYPE 1
permet à Database Migration Service de convertir tous les types de données numériques Oracle trouvés dans les tables du schémaroot
en types spécifiques à PostgreSQL au lieu de types numériques portables ANSI.DEFAULT_NUMERIC
permet à Database Migration Service de convertir les valeursNUMBER
qui ne comportent pas de point de précision spécifié en typeINTEGER
PostgreSQL. Cela ne s'applique qu'aux valeursNUMBER
trouvées dans les tables du schémaroot
.DATA_TYPE NUMBER(4\,0):integer
entraîne la conversion de valeursNUMBER(4,0)
spécifiques enINTEGER
PostgreSQL par Database Migration Service.- La directive
MODIFY_TYPE
permet à Database Migration Service de convertir spécifiquement les données de la colonnedates_and_times
de la table sourceevents
au typeDATETIME
PostgreSQL, quel que soit le format de la colonne source. REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname)
oblige Database Migration Service à renommer les colonnes suivantes dans le schéma converti :- La colonne
dates_and_times
de la table sourceevents
est renomméeevent_dates
dans la même table du schéma converti. - La colonne
pseudonym
de la table sourceusers
est renomméenickname
dans la même table du schéma converti.
events
etusers
du schémaroot
.- La colonne
REPLACE_TABLES events:login_events users:platform_users
renomme les tables suivantes dans le schéma converti :- La table
events
est rebaptiséelogin_events
. - La table
users
est rebaptiséeplatform_users
.
events
etusers
du schémaroot
.- La table
Anciens espaces de travail de conversion
Les anciens espaces de travail de conversion sont un type d'espaces de travail de conversion plus ancien et plus limité. Les anciens espaces de travail de conversion ne sont pas compatibles avec les fonctionnalités de conversion améliorées par Gemini ni avec l'éditeur SQL interactif. Vous ne pouvez les utiliser que pour convertir votre schéma source avec l'outil de migration Ora2Pg.
Nous vous déconseillons d'utiliser l'ancien type d'espaces de travail de conversion pour vos migrations. Si votre scénario nécessite l'utilisation d'anciens espaces de travail de conversion, consultez Utiliser d'anciens espaces de travail de conversion.
Étape suivante
- Pour en savoir plus sur l'utilisation de l'espace de travail de conversion interactif, consultez la section Créer un espace de travail de conversion interactif.