Migration d'applications à partir de bases de données PostgreSQL vers une base de données d'IA autonome
Vous pouvez migrer des instructions SQL de PostgreSQL vers Oracle SQL et les exécuter sur la base de données Autonomous AI.
- Traduire les instructions PostgreSQL en instructions Oracle SQL
Vous pouvez traduire les instructions SQL écrites dans PostgreSQL en instructions Oracle SQL et exécuter les instructions traduites sur Autonomous AI Database. - Exécution d'instructions PostgreSQL dans une base de données d'IA autonome
Vous pouvez traduire et exécuter des instructions PostgreSQL de manière interactive dans votre base de données d'IA autonome. - Migration de fichiers PostgreSQL vers Oracle SQL
Vous pouvez migrer un fichier contenant des instructions PostgreSQL vers un fichier contenant des instructions Oracle SQL. - Limites relatives à la migration et à la conversion des instructions PostgreSQL en instructions Oracle SQL
Cette section récapitule les limites relatives à la migration des instructions SQL de PostgreSQL vers Oracle SQL.
Rubrique parent : Migration d'applications d'instructions SQL non Oracle vers Oracle SQL
Convertir des instructions PostgreSQL en instructions SQL Oracle
Vous pouvez traduire les instructions SQL écrites dans PostgreSQL en instructions Oracle SQL et les exécuter sur Autonomous AI Database.
Utilisez DBMS_CLOUD_MIGRATION.MIGRATE_SQL pour convertir l'instruction PostgreSQL en instruction Oracle SQL. Il existe des variantes de procédure et de fonction de DBMS_CLOUD_MIGRATION.MIGRATE_SQL.
Migrer l'instruction PostgreSQL vers Oracle SQL avec la procédure MIGRATE_SQL
L'exemple suivant accepte l'instruction SQL écrite dans PostgreSQL en tant qu'entrée, traduit l'instruction en instruction Oracle SQL, affecte l'instruction SQL traduite à output_sql_result et affiche le résultat :
SET SERVEROUTPUT ON
declare output_sql_result CLOB;
BEGIN
DBMS_CLOUD_MIGRATION.MIGRATE_SQL(
original_sql => 'SELECT e.employee_id, e.last_name, e.salary FROM employees AS e;',
output_sql => output_sql_result,
source_db => 'POSTGRES');
DBMS_OUTPUT.PUT_LINE (output_sql_result);
END;
/
Output
–-------------------------------------------------------------
SELECT e.employee_id, e.last_name, e.salary FROM employees e;
Le paramètre original_sql indique l'instruction PostgreSQL.
Le paramètre output_sql stocke l'instruction SQL traduite.
Le paramètre source_db indique le nom de la base de données PostgreSQL.
Pour plus d'informations, reportez-vous à la section MIGRATE_SQL Procedure and Function.
Migrer l'instruction PostgreSQL vers Oracle SQL avec la fonction MIGRATE_SQL
L'exemple suivant illustre la fonction DBMS_CLOUD_MIGRATION.MIGRATE_SQL dans une instruction SELECT. L'entrée de fonction est une instruction PostgreSQL et la fonction renvoie l'instruction traduite dans Oracle SQL :
SELECT DBMS_CLOUD_MIGRATION.MIGRATE_SQL(
'CREATE TABLE IF NOT EXISTS cars (brand VARCHAR(255), model VARCHAR(255), year INT)',
'POSTGRES') AS output FROM DUAL;
OUTPUT
------------------------------------------------------------------------------
create table cars (brand VARCHAR2(255), model VARCHAR2(255), year NUMBER(10);
Pour plus d'informations, reportez-vous à la section MIGRATE_SQL Procedure and Function.
Remarques concernant l'exécution de DBMS_CLOUD_MIGRATION.MIGRATE_SQL :
-
Une erreur peut survenir lors de la conversion si l'instruction SQL d'entrée n'est pas prise en charge dans Oracle SQL. Pour plus d'informations, reportez-vous à Limites relatives à la migration et à la traduction des instructions PostgreSQL vers Oracle SQL.
-
Les sous-programmes
DBMS_CLOUD_MIGRATION.MIGRATE_SQLacceptent une seule instruction SQL en tant qu'entrée. Par conséquent, une seule instruction SQL peut être traduite par appel.
Exécution d'instructions PostgreSQL dans une base de données Autonomous AI
Vous pouvez traduire et exécuter des instructions PostgreSQL de manière interactive dans votre base de données Autonomous AI.
Utilisez la procédure ENABLE_TRANSLATION pour activer la traduction en temps réel des instructions SQL écrites dans PostgreSQL. Une fois la conversion activée dans une session, les instructions PostgreSQL sont automatiquement traduites et exécutées en tant qu'instructions SQL Oracle. Les résultats sont visibles.
ENABLE_TRANSLATION, vous pouvez effectuer les opérations suivantes de manière interactive dans une session :
-
Créez les tables. Par exemple, créez les tables
MOVIEetINVENTORY. -
Insérer des données dans des tables.
-
Tables de requête.
-
Effectuez des opérations JOIN sur les tables. Par exemple, vous pouvez effectuer une jointure externe gauche sur les tables.
Pour activer la traduction à l'aide de PostgreSQL et exécuter des commandes, procédez comme suit :
Vous pouvez interroger la vue V$MAPPED_SQL pour répertorier les instructions PostgreSQL traduites et mises en correspondance en mémoire avec des instructions SQL Oracle.
Par exemple :
SELECT v.*
FROM v$mapped_sql v, dba_objects o
WHERE v.sql_translation_profile_id = o.object_id
AND o.object_name = 'POSTGRES'
AND o.object_type = 'TRANSLATION PROFILE';Pour plus d'informations, reportez-vous à V$MAPPED_SQL.
Migrer les fichiers PostgreSQL vers Oracle SQL
Vous pouvez migrer un fichier contenant des instructions PostgreSQL vers un fichier contenant des instructions SQL Oracle.
La procédure DBMS_CLOUD_MIGRATION.MIGRATE_FILE traduit les instructions SQL dans un fichier PostgreSQL dans Object Storage et génère un nouveau fichier contenant Oracle SQL.
Vous devez au préalable télécharger des fichiers PostgreSQL avec l'extension .sql vers un emplacement sur Object Storage. Les exemples suivants utilisent le fichier postgrestest.sql téléchargé vers Object Storage. Pour plus d'informations, reportez-vous à Mise de données dans le stockage d'objets.
Pour migrer des fichiers PostgreSQL vers Oracle SQL, procédez comme suit :
Exécutez la requête suivante pour afficher le contenu du fichier postgrestest_oracle.sql :
SELECT UTL_RAW.CAST_TO_VARCHAR2 (DBMS_CLOUD.GET_OBJECT(
credential_name => 'OCI$RESOURCE_PRINCIPAL',
object_uri => 'https://objectstorage.region.oraclecloud.com/n/namespace/b/bucket/o/files'))
FROM dual;
UTL_RAW.CAST_TO_VARCHAR2(DBMS_CLOUD.GET_OBJECT(CREDENTIAL_NAME=>'CRED1',OBJECT_U
--------------------------------------------------------------------------------
SELECT f.film_id, f.title, inventory_id
FROM film f LEFT JOIN inventory
ON inventory.film_id = f.film_id;
Si vous créez des informations d'identification au lieu du principal de ressource, OCI$RESOURCE_PRINCIPAL, indiquez le nom des informations d'identification dans le paramètre credential_name.
Pour plus d'informations, reportez-vous à la section GET_OBJECT Procedure and Function.
Limites relatives à la migration et à la traduction des instructions PostgreSQL vers Oracle SQL
Cette section récapitule les limites de la migration d'instructions SQL de PostgreSQL vers Oracle SQL.
CREATE DOMAINCREATE EXTENSIONCREATE DATABASECREATE TYPESET
ALTER TABLE: seulALTER TABLE ADD CONSTRAINTest pris en charge lors de la migration vers la base de données Autonomous AI.DELETE: le mot-cléRETURNING *dans l'instructionDELETEn'est pas pris en charge dans la base de données Autonomous AI. Vous devez remplacer la clauseRETURNING *par la clauseRETURNING INTO. Par exemple,DELETE FROM tasks WHERE status = 'DONE' RETURNING *;.Pour plus d'informations, reportez-vous à Clause RETURNING INTO.
CREATE FUNCTION: les éléments suivants ne sont pas pris en charge avecCREATE FUNCTION:- Type de retour
SETOF. Vous devez remplacerSETOFpar des types de retourCURSORSouCOLLECTIONS. - Clause
IMMUTABLE. - Déclarations de paramètre au format
FUNCTION_NAME (DATATYPE, DATATYPE).
- Type de retour
ALTER FUNCTION: les arguments de fonctionALTER FUNCTION, par exempleRENAME TO,OWNER TOetSET SCHEMA, ne sont pas pris en charge.