Anwendungen von PostgreSQL-Datenbanken zu Autonomous Database migrieren
Sie können SQL-Anweisungen von PostgreSQL zu Oracle SQL migrieren und die Anweisungen in Autonomous Database ausführen.
- PostgreSQL-Anweisungen in Oracle SQL umwandeln
Sie können in PostgreSQL geschriebene SQL-Anweisungen in Oracle SQL übersetzen und die übersetzten Anweisungen in Autonomous Database ausführen. - PostgreSQL-Anweisungen in Autonomous Database ausführen
Sie können PostgreSQL-Anweisungen interaktiv in Autonomous Database übersetzen und ausführen. - PostgreSQL-Dateien in Oracle SQL migrieren
Sie können eine Datei mit PostgreSQL-Anweisungen in eine Datei mit Oracle SQL-Anweisungen migrieren. - Einschränkungen bei der Migration und Übersetzung von PostgreSQL-Anweisungen in Oracle SQL
In diesem Abschnitt werden die Einschränkungen bei der Migration von SQL-Anweisungen von PostgreSQL zu Oracle SQL zusammengefasst.
Übergeordnetes Thema: Anwendungen von Nicht-Oracle SQL zu Oracle SQL migrieren
PostgreSQL-Anweisungen in Oracle SQL übersetzen
Sie können SQL-Anweisungen, die in PostgreSQL geschrieben wurden, in Oracle SQL übersetzen und die übersetzten Anweisungen in Autonomous Database ausführen.
Verwenden Sie DBMS_CLOUD_MIGRATION.MIGRATE_SQL
, um die Anweisung PostgreSQL in Oracle SQL zu übersetzen. Es gibt Prozedur- und Funktionsvarianten von DBMS_CLOUD_MIGRATION.MIGRATE_SQL
.
PostgreSQL-Anweisung mit der Prozedur MIGRATE_SQL in Oracle SQL migrieren
Im folgenden Beispiel wird die in PostgreSQL geschriebene SQL-Anweisung als Eingabe akzeptiert, die Anweisung in Oracle SQL übersetzt, die übersetzte SQL-Anweisung output_sql_result
zugewiesen und das Ergebnis ausgegeben:
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;
Der Parameter original_sql
gibt die PostgreSQL-Anweisung an.
Der Parameter output_sql
speichert die übersetzte SQL.
Der Parameter source_db
gibt den Datenbanknamen PostgreSQL an.
Weitere Informationen finden Sie unter MIGRATE_SQL Prozedur und Funktion.
PostgreSQL-Anweisung mit der Funktion MIGRATE_SQL in Oracle SQL migrieren
Das folgende Beispiel zeigt die Funktion DBMS_CLOUD_MIGRATION.MIGRATE_SQL
innerhalb einer SELECT
-Anweisung. Die Funktionseingabe ist eine PostgreSQL-Anweisung, und die Funktion gibt die übersetzte Anweisung in Oracle SQL zurück:
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);
Weitere Informationen finden Sie unter MIGRATE_SQL Prozedur und Funktion.
Hinweise zur Ausführung von DBMS_CLOUD_MIGRATION.MIGRATE_SQL
:
-
Bei der Übersetzung kann ein Fehler auftreten, wenn die SQL-Eingabeanweisung in Oracle SQL nicht unterstützt wird. Weitere Informationen finden Sie unter Einschränkungen bei der Migration und Übersetzung von PostgreSQL-Anweisungen in Oracle SQL.
-
Die Unterprogramme
DBMS_CLOUD_MIGRATION.MIGRATE_SQL
akzeptieren nur eine SQL-Anweisung als Eingabe. Pro Aufruf kann also nur eine einzelne SQL-Anweisung übersetzt werden.
Übergeordnetes Thema: Anwendungen von PostgreSQL-Datenbanken zu Autonomous Database migrieren
PostgreSQL-Anweisungen in Autonomous Database ausführen
Sie können PostgreSQL-Anweisungen interaktiv in Autonomous Database übersetzen und ausführen.
Verwenden Sie die Prozedur ENABLE_TRANSLATION
, um die Echtzeitübersetzung von SQL-Anweisungen zu aktivieren, die in PostgreSQL geschrieben sind. Nachdem Sie die Übersetzung in einer Session aktiviert haben, werden PostgreSQL-Anweisungen automatisch übersetzt und als Oracle SQL-Anweisungen ausgeführt. Die Ergebnisse werden angezeigt.
ENABLE_TRANSLATION
ausführen, können Sie in einer Session interaktiv Folgendes ausführen:
-
Tabellen erstellen Beispiel: Erstellen Sie die Tabellen
MOVIE
undINVENTORY
. -
Daten in Tabellen einfügen
-
Abfragetabellen
-
JOIN-Vorgänge für Tabellen ausführen Beispiel: Sie können einen linken Outer Join für Tabellen ausführen.
So aktivieren Sie die Übersetzung mit PostgreSQL und führen Befehle aus:
Sie können die View V$MAPPED_SQL
abfragen, um die PostgreSQL-Anweisungen aufzulisten, die übersetzt und Oracle SQL-Anweisungen im Speicher zugeordnet werden.
Beispiel:
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';
Weitere Informationen finden Sie unter V$MAPPED_SQL.
Übergeordnetes Thema: Anwendungen von PostgreSQL-Datenbanken zu Autonomous Database migrieren
PostgreSQL-Dateien zu Oracle SQL migrieren
Sie können eine Datei mit PostgreSQL-Anweisungen in eine Datei mit Oracle SQL-Anweisungen migrieren.
Die Prozedur DBMS_CLOUD_MIGRATION.MIGRATE_FILE
übersetzt SQL-Anweisungen in eine Datei PostgreSQL in Object Storage und generiert eine neue Datei mit Oracle SQL.
Als Voraussetzung müssen Sie mindestens eine PostgreSQL-Datei mit der Erweiterung .sql
in einen Speicherort in Object Storage hochladen. In den folgenden Beispielen wird die Datei postgrestest.sql
verwendet, die in Object Storage hochgeladen wird. Weitere Informationen finden Sie unter Daten in Objektspeicher einfügen.
So migrieren Sie PostgreSQL-Dateien zu Oracle SQL:
Führen Sie die folgende Abfrage aus, um den Inhalt der Datei postgrestest_oracle.sql
anzuzeigen:
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;
Wenn Sie alternativ Zugangsdaten anstelle des Resource Principals OCI$RESOURCE_PRINCIPAL
erstellen, geben Sie den Zugangsdatennamen im Parameter credential_name
an.
Weitere Informationen finden Sie unter GET_OBJECT Prozedur und Funktion.
Übergeordnetes Thema: Anwendungen von PostgreSQL-Datenbanken zu Autonomous Database migrieren
Einschränkungen bei Migration und Übersetzung von PostgreSQL-Anweisungen in Oracle SQL
In diesem Abschnitt werden die Einschränkungen für die Migration von SQL-Anweisungen von PostgreSQL zu Oracle SQL zusammengefasst.
CREATE DOMAIN
CREATE EXTENSION
CREATE DATABASE
CREATE TYPE
SET
ALTER TABLE
: Bei der Migration zu Autonomous Database wird nurALTER TABLE ADD CONSTRAINT
unterstützt.DELETE
: Das SchlüsselwortRETURNING *
in derDELETE
-Anweisung wird in Autonomous Database nicht unterstützt. Sie müssen dieRETURNING *
-Klausel durch dieRETURNING INTO
-Klausel ersetzen. Beispiel:DELETE FROM tasks WHERE status = 'DONE' RETURNING *;
.Weitere Informationen finden Sie unter RETURNING INTO-Klausel.
CREATE FUNCTION
: Folgende Elemente werden inCREATE FUNCTION
nicht unterstützt:- Beim Rückgabetyp
SETOF
müssen SieSETOF
durchCURSORS
- oderCOLLECTIONS
-Rückgabetypen ersetzen. - Die
IMMUTABLE
-Klausel. - Die Parameterdeklarationen im Format
FUNCTION_NAME (DATATYPE, DATATYPE)
.
- Beim Rückgabetyp
ALTER FUNCTION
: Die Argumente der FunktionALTER FUNCTION
, z.B.RENAME TO
,OWNER TO
,SET SCHEMA
, werden nicht unterstützt.
Übergeordnetes Thema: Anwendungen von PostgreSQL-Datenbanken zu Autonomous Database migrieren