Migrer des applications de bases de données PostgreSQL vers une base de données Autonomous AI Database
Vous pouvez migrer des énoncés SQL de PostgreSQL vers Oracle SQL et exécuter les énoncés sur Autonomous AI Database.
- Convertir les énoncés PostgreSQL en énoncés Oracle SQL
Vous pouvez traduire les énoncés SQL écrits dans PostgreSQL en énoncés Oracle SQL et exécuter les énoncés traduits sur Autonomous AI Database. - Exécuter les énoncés PostgreSQL dans la base de données d'IA autonome
Vous pouvez traduire et exécuter de manière interactive les énoncés PostgreSQL dans votre base de données d'IA autonome. - Migrer des fichiers PostgreSQL vers Oracle SQL
Vous pouvez migrer un fichier contenant des énoncés PostgreSQL vers un fichier contenant des énoncés Oracle SQL. - Limitations pour la migration et la traduction des énoncés PostgreSQL vers Oracle SQL
Cette section résume les limites pour la migration des énoncés SQL de PostgreSQL vers Oracle SQL.
Rubrique parent : Migrer des applications de SQL non Oracle vers Oracle SQL
Traduire les énoncés PostgreSQL en SQL Oracle
Vous pouvez traduire les énoncés SQL écrits dans PostgreSQL vers Oracle SQL et exécuter les énoncés traduits sur Autonomous AI Database.
Utilisez DBMS_CLOUD_MIGRATION.MIGRATE_SQL pour traduire l'énoncé PostgreSQL en SQL Oracle. Il existe des variantes de procédure et de fonction de DBMS_CLOUD_MIGRATION.MIGRATE_SQL.
Migrer l'énoncé PostgreSQL vers Oracle SQL avec la procédure MIGRATE_SQL
L'exemple suivant accepte l'énoncé SQL écrit dans PostgreSQL en tant qu'entrée, traduit l'énoncé dans Oracle SQL, affecte l'énoncé SQL traduit à output_sql_result et imprime 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 spécifie l'énoncé PostgreSQL.
Le paramètre output_sql stocke l'énoncé SQL traduit.
Le paramètre source_db spécifie le nom de la base de données PostgreSQL.
Pour plus d'informations, voir MIGRATE_SQL Procédure et fonction.
Migrer l'énoncé PostgreSQL vers Oracle SQL avec la fonction MIGRATE_SQL
L'exemple suivant présente la fonction DBMS_CLOUD_MIGRATION.MIGRATE_SQL dans un énoncé SELECT. L'entrée de la fonction est un énoncé PostgreSQL et la fonction retourne l'énoncé traduit 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, voir MIGRATE_SQL Procédure et fonction.
Notes pour l'exécution de DBMS_CLOUD_MIGRATION.MIGRATE_SQL :
-
Vous pouvez rencontrer une erreur lors de la conversion si l'énoncé SQL d'entrée n'est pas pris en charge dans Oracle SQL. Pour plus d'informations, voir Limitations pour la migration et la traduction des énoncés PostgreSQL en SQL Oracle.
-
Les sous-programmes
DBMS_CLOUD_MIGRATION.MIGRATE_SQLn'acceptent qu'un seul énoncé SQL en tant qu'entrée. Ainsi, une seule instruction SQL peut être traduite par appel.
Exécuter les énoncés PostgreSQL dans Autonomous AI Database
Vous pouvez traduire et exécuter de manière interactive les énoncés PostgreSQL dans votre base de données d'intelligence artificielle autonome.
Utilisez la procédure ENABLE_TRANSLATION pour activer la traduction en temps réel des énoncés SQL écrits dans PostgreSQL. Après avoir activé la traduction dans une session, les énoncés PostgreSQL sont automatiquement traduits et exécutés en tant qu'énoncés Oracle SQL, et vous pouvez voir les résultats.
ENABLE_TRANSLATION, vous pouvez effectuer de manière interactive les opérations suivantes dans une session :
-
Créez les tables. Par exemple, créez les tables
MOVIEetINVENTORY. -
Insérer les données dans les tables.
-
tables d'interrogation;
-
Effectuez des opérations JOIN sur les tables. Par exemple, vous pouvez effectuer une jointure externe gauche sur des tables.
Pour activer la traduction avec PostgreSQL et exécuter des commandes :
Vous pouvez interroger la vue V$MAPPED_SQL pour lister les énoncés PostgreSQL traduits et mappés en mémoire aux énoncés SQL Oracle.
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, voir V$MAPPED_SQL.
Migrer les fichiers PostgreSQL vers Oracle SQL
Vous pouvez migrer un fichier contenant des énoncés PostgreSQL vers un fichier contenant des énoncés Oracle SQL.
La procédure DBMS_CLOUD_MIGRATION.MIGRATE_FILE traduit les énoncés SQL dans un fichier PostgreSQL du service de stockage d'objets et génère un nouveau fichier contenant Oracle SQL.
Vous devez au préalable charger un ou plusieurs fichiers PostgreSQL ayant l'extension .sql dans un emplacement du stockage d'objets. Les exemples suivants utilisent le fichier postgrestest.sql qui est chargé dans le stockage d'objets. Pour plus d'informations, voir Mettre des données dans le stockage d'objets.
Pour migrer des fichiers PostgreSQL vers Oracle SQL :
Exécutez l'interrogation suivante pour voir 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;
Sinon, si vous créez des données d'identification au lieu du principal de ressource, OCI$RESOURCE_PRINCIPAL, spécifiez le nom des données d'identification dans le paramètre credential_name.
Pour plus d'informations, voir GET_OBJECT Procédure et fonction.
Limites pour la migration et la traduction des énoncés PostgreSQL en SQL Oracle
Cette section résume les limitations pour la migration des énoncés 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 une base de données d'IA autonome.DELETE: Le mot cléRETURNING *dans l'énoncéDELETEn'est pas pris en charge dans la base de données d'intelligence artificielle autonome. Vous devez remplacer la clauseRETURNING *par la clauseRETURNING INTO. Par exemple,DELETE FROM tasks WHERE status = 'DONE' RETURNING *;.Pour plus d'informations, voir RETURNING INTO Clause.
CREATE FUNCTION: Les éléments suivants ne sont pas pris en charge avecCREATE FUNCTION:- Le type de retour
SETOF, vous devez remplacerSETOFpar des types de retourCURSORSouCOLLECTIONS. - Clause
IMMUTABLE. - Déclarations de paramètre dans le format
FUNCTION_NAME (DATATYPE, DATATYPE).
- Le type de retour
ALTER FUNCTION: Les arguments de la fonctionALTER FUNCTION, par exempleRENAME TO,OWNER TO,SET SCHEMA, ne sont pas pris en charge.