Le aree di lavoro di conversione consentono di trasformare lo schema e gli oggetti del database di origine nella sintassi SQL compatibile con il database di destinazione. Questa pagina fornisce una panoramica delle aree di lavoro di conversione di Database Migration Service:
Oggetti supportati dalla conversione automatica di codice e schema elenca gli oggetti Oracle supportati per la conversione automatica dello schema.
Editor SQL interattivo descrive gli oggetti che puoi modificare direttamente nell'editor dell'area di lavoro della conversione.
L'articolo Funzionalità di conversione assistita da Gemini illustra come integrare il supporto dell'IA generativa per velocizzare il processo di conversione dello schema.
La sezione File di mappatura delle conversioni fornisce una panoramica delle direttive di personalizzazione che puoi utilizzare per sostituire le regole della conversione automatica dello schema.
Aree di lavoro di conversione legacy descrive le aree di lavoro legacy che non supportano l'editor SQL interattivo.
Indipendentemente dal fatto che tu utilizzi la conversione automatica dello schema o crei un file di mappature delle conversioni aggiuntivo, alcuni tipi di dati non sono supportati per le migrazioni di Oracle. Per ulteriori informazioni, consulta Limitazioni note per i tipi di dati.
Conversione automatica di codice e schemi
Quando crei un'area di lavoro di conversione, Database Migration Service esegue automaticamente la conversione iniziale dello schema. La conversione automatica dello schema supporta un sottoinsieme molto specifico di oggetti del database Oracle disponibili.
La conversione automatica del codice fornisce il supporto per i seguenti oggetti del database Oracle:
Elementi dello schema Oracle supportati
- Vincoli
- Indici (solo quelli creati nello stesso schema della tabella)
- Viste materializzate
- Tipi di oggetti (supporto parziale)
- Sequenze
- Sinonimi
- Tables
- Visualizzazioni
Elementi di codice Oracle supportati
- Trigger (solo a livello di tabella)
- Pacchetti
- Funzioni
- Stored procedure
Editor SQL interattivo
L'editor SQL interattivo ti consente di modificare la sintassi PostgreSQL convertita direttamente in Database Migration Service. Puoi utilizzarlo per risolvere i problemi di conversione o modificare lo schema in base alle tue esigenze. Alcuni oggetti non possono essere modificati nell'editor integrato.
Oggetti Oracle modificabili
Dopo aver convertito il codice e lo schema del database di origine, puoi utilizzare l'editor interattivo per modificare il codice SQL generato per determinati tipi di oggetti. L'editor supporta i seguenti oggetti Oracle:
- Trigger delle tabelle (richiede l'autorizzazione)
- Viste materializzate
- Pacchetti
- Funzioni, stored procedure
- Sinonimi
- Visualizzazioni
- Vincoli
- Indici
- Sequenze
Inoltre, alcuni oggetti vengono convertiti, ma non sono disponibili per la modifica direttamente all'interno di Database Migration Service. Per modificare questi oggetti, devi eseguire gli aggiornamenti direttamente sul database di destinazione dopo aver applicato lo schema e il codice convertiti.
Oggetti che non sono supportati per la modifica:
- Tipi di oggetti definiti dall'utente
- Tables
- Schemi
Funzionalità di conversione indiretta di Gemini
Database Migration Service integra Gemini per Google Cloud nelle workspace di conversione per aiutarti ad accelerare e migliorare il processo di conversione in due aree:
Fornisci funzionalità di spiegazione del codice con l'assistente alla conversione: un insieme di prompt dedicati che possono aiutarti a comprendere meglio la logica di conversione, proporre correzioni per i problemi di conversione o ottimizzare il codice convertito.
Velocizza l'applicazione delle correzioni per i problemi di conversione con i suggerimenti di conversione del codice di Gemini: un meccanismo in cui il modello Gemini può apprendere man mano che risolvi i problemi di conversione e suggerire modifiche ad altri oggetti con errori nello spazio di lavoro.
Per ulteriori informazioni sulla conversione assistita da Gemini, consulta le seguenti pagine:
Converti il codice e lo schema di Oracle con l'assistenza di Gemini
Flusso di lavoro di esempio per la correzione di oggetti di codice con problemi di conversione
File di mappatura delle conversioni
Puoi personalizzare la logica di conversione con un file di mappatura delle conversioni. Il file di mappatura delle conversioni è un file di testo contenente istruzioni precise (chiamate direttive di conversione) su come gli oggetti Oracle devono essere convertiti in oggetti PostgreSQL.
Direttive di conversione supportate
Database Migration Service supporta le seguenti direttive di conversione per i file di mappatura della conversione:
EXPORT_SCHEMA
EXPORT_SCHEMA
è una direttiva obbligatoria per tutti i file di mappatura delle conversioni. Database Migration Service richiede questa istruzione per garantire
che gli schemi di origine vengano convertiti negli schemi di destinazione corretti.
Assicurati che i file di mappatura delle conversioni includano questa riga:
EXPORT_SCHEMA 1
SCHEMA
Database Migration Service deve essere in grado di determinare quale schema contiene gli oggetti da modificare con le istruzioni di conversione.
La direttiva SCHEMA
comporta i seguenti aggiustamenti al
flusso di conversione:
- Database Migration Service converte solo questo schema. Se devi convertire altri schemi in un'unica area di lavoro di conversione, devi caricare più file con schemi diversi.
- Tutte le altre direttive di personalizzazione fornite nel file si applicano solo agli oggetti di questo schema specifico.
Utilizza il formato seguente:
SCHEMA SCHEMA_NAME
dove SCHEMA_NAME è il nome dello schema nel database di origine.
- Se includi questa direttiva nel file di mappatura delle conversioni, tutte le personalizzazioni vengono applicate solo agli oggetti contenuti in questo schema specifico. Se vuoi personalizzare gli oggetti in altri schemi, devi creare più file di mappatura delle conversioni e caricarli nello schema di conversione.
- Se salti questa direttiva, devi fornire nomi espliciti dello schema per gli oggetti modificati da altre direttive di conversione.
Ad esempio, anziché utilizzare
SOURCE_TABLE_NAME
per la direttivaREPLACE_TABLES
, dovrai utilizzare"SCHEMA_NAME.SOURCE_TABLE_NAME"
.
DATA_TYPE
Puoi utilizzare questa direttiva per mappare esplicitamente qualsiasi
tipo di dato supportato tra
la sintassi di Oracle e PostgreSQL. Questa direttiva
prevede un elenco di mappature separate da virgole. L'intera definizione deve essere fornita su una singola riga, ma puoi includere più direttive DATA_TYPE
nel file di configurazione. Utilizza il formato seguente:
DATA_TYPE ORACLE_DATA_TYPE1:PGSQL_DATA_TYPE1 DATA_TYPE ORACLE_DATA_TYPE2:PGSQL_DATA_TYPE2...
dove ORACLE_DATA_TYPE e PGSQL_DATA_TYPE sono tipi di dati supportati dalle rispettive versioni di Oracle e PostgreSQL che utilizzi nella migrazione. Per informazioni sulle versioni supportate, consulta la Panoramica dello scenario.
Esempio:
DATA_TYPE REAL:double precision,SMALLINT:integer
Per ulteriori informazioni sui tipi di dati di Oracle e PostgreSQL, consulta:
- Tipi di dati Oracle nella documentazione di Oracle.
- Tipi di dati PostgreSQL nella documentazione di PostgreSQL.
MODIFY_TYPE
La direttiva MODIFY_TYPE
ti consente di controllare in quale
tipo di dati Database Migration Service converte una colonna specifica nella tabella di origine.
Questa direttiva prevede un elenco di mappature separate da virgole.
L'intera definizione deve essere fornita su una singola riga, ma puoi includere più direttive MODIFY_TYPE
nel file di configurazione.
Utilizza il formato seguente:
MODIFY_TYPE SOURCE_TABLE_NAME1:COLUMN_NAME:EXPECTED_END_RESULT_DATA_TYPE MODIFY_TYPE SOURCE_TABLE_NAME2:COLUMN_NAME:EXPECTED_END_RESULT_DATA_TYPE...
Dove:
- SOURCE_TABLE_NAME è il nome della tabella che contiene la colonna in cui vuoi modificare il tipo di dati.
- COLUMN_NAME è il nome della colonna per la quale vuoi personalizzare la mappatura delle conversioni.
- EXPECTED_END_RESULT_DATA_TYPE è il tipo di dati PostgreSQL che vuoi che venga utilizzato dalla colonna convertita.
Esempio:
MODIFY_TYPE events:dates_and_times:DATETIME,users:pseudonym:TEXT
PG_INTEGER_TYPE
Per impostazione predefinita,Database Migration Service converte i tipi NUMBER(p,s)
nel tipo DECIMAL(p,s)
di PostgreSQL.
Puoi modificare questo comportamento con la direttiva PG_INTEGER_TYPE
. Imposta il valore su 1
e forza la conversione di tutti i tipi
NUMBER
con precisione e scala (NUMBER(p,s)
)
in tipi smallint
,
integer
o bigint
di PostgreSQL in base al numero
di cifre di precisione.
Includi la seguente impostazione nel file di mappatura delle conversioni:
PG_INTEGER_TYPE 1
PG_NUMERIC_TYPE
Imposta questa direttiva su 1
se vuoi convertire tutti i tipi di NUMBER
con precisione e scala (NUMBER(p,s)
) in tipi real
o float
di PostgreSQL (in base al numero di cifre di precisione).
Se imposti questa direttiva su 0
, i valori NUMBER(p,s)
mantengono il loro valore originale esatto e utilizzano il tipo di dato PostgreSQL interno.
Includi la seguente impostazione nel file di mappatura delle conversioni:
PG_NUMERIC_TYPE 1
DEFAULT_NUMERIC
La conversione predefinita per i valori NUMBER
senza precisione
cambia a seconda che tu utilizzi anche la
direttiva PG_INTEGER_TYPE
:
- Se utilizzi la direttiva
PG_INTEGER
, i valoriNUMBER
senza precisione vengono convertiti in valoriDECIMAL
. - Se non utilizzi la direttiva
PG_INTEGER
, i valoriNUMBER
senza precisione vengono convertiti in valoriBIGINT
.
Puoi modificare questo comportamento e utilizzare la direttiva DEFAULT_NUMERIC
per specificare il tipo di dati da utilizzare per i tipi NUMBER
senza punti di precisione specificati.
Utilizza il formato seguente:
DEFAULT_NUMERIC POSTGRESQL_NUMERIC_DATA_TYPE
Dove POSTGRESQL_NUMERIC_DATA_TYPE è uno dei seguenti: integer
, smallint
, bigint
.
Esempio:
DEFAULT_NUMERIC integer
REPLACE_COLS
Puoi utilizzare la direttiva REPLACE_COLS
per rinominare le colonne
nello schema convertito. Questa direttiva prevede un elenco di mappature separate da virgole.
Utilizza il formato seguente:
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)...
Dove:
- SOURCE_TABLE_NAME è il nome della tabella contenente la colonna di cui vuoi modificare il nome.
- SOURCE_COLUMN_NAME è il nome della colonna nell'origine di cui vuoi modificare il nome.
- DESTINATION_COLUMN_NAME è il nuovo nome della colonna che vuoi utilizzare nello schema convertito.
Esempio:
REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname)
REPLACE_TABLES
Puoi utilizzare la direttiva REPLACE_TABLES
per rinominare le tabelle o spostarle in un nuovo schema. Questa direttiva prevede un elenco di mappature separate da spazi. Per ulteriori informazioni sulla sintassi di ciascun caso d'uso, espandi le sezioni seguenti.
Ridenominazione delle tabelle
Per rinominare le tabelle nello schema convertito, utilizza il seguente formato:
REPLACE_TABLES SOURCE_TABLE_NAME1:DESTINATION_TABLE_NAME1 SOURCE_TABLE_NAME2:DESTINATION_TABLE_NAME2
Dove:
- SOURCE_TABLE_NAME è il nome della tabella di origine che vuoi rinominare nello schema convertito.
- DESTINATION_TABLE_NAME è il nuovo nome della tabella che vuoi utilizzare nello schema convertito.
Esempio:
REPLACE_TABLES "events:login_events" "users:platform_users"
Spostare le tabelle da uno schema all'altro
Puoi utilizzare questa direttiva per spostare le tabelle tra gli schemi aggiungendo il prefisso dello schema al nome della nuova tabella. Questo meccanismo può essere utilizzato indipendentemente da come utilizzi la direttiva SCHEMA per l'intero file di conversione. Ad esempio:
REPLACE_TABLES "events:NEW_SCHEMA_NAME.login_events"
Alias per la personalizzazione dei tipi di dati
Quando utilizzi le direttive di conversione per modificare il modo in cui Database Migration Service converte diversi tipi di dati (ad esempio, con le direttive
DATA_TYPE
,
MODIFY_TYPE
o
PG_NUMERIC_TYPE
), puoi utilizzare gli alias anziché i tipi di dati SQL di origine.
Espandi la sezione seguente per visualizzare l'elenco degli alias dei tipi di dati supportati da Database Migration Service.
Alias dei tipi di dati
Alias | Convertito in tipo 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 |
File di mappatura delle conversioni di esempio
Consulta il seguente file di mappatura delle conversioni di esempio che utilizza tutte le direttive di conversione dello schema supportate:
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
I risultati dell'utilizzo di questo file sono i seguenti:
EXPORT_SCHEMA 1
è un'istruzione obbligatoria.SCHEMA root
comporta i seguenti aggiustamenti al flusso di conversione:- Database Migration Service esegue la conversione solo per le entità nello schema
root
. Nessun altro schema viene convertito. - Tutte le altre direttive di personalizzazione in questo file si applicano solo alle colonne e ai tipi di dati definiti nello schema
root
.
- Database Migration Service esegue la conversione solo per le entità nello schema
PG_INTEGER_TYPE 1
consente a Database Migration Service di convertire tutti i tipi di dati numerici Oracle trovati nelle tabelle dello schemaroot
in tipi specifici di PostgreSQL anziché in tipi numerici portabili ANSI.DEFAULT_NUMERIC
fa in modo che Database Migration Service converta i valoriNUMBER
che non hanno un punto di precisione specificato nel tipoINTEGER
di PostgreSQL. Questo vale solo per i valoriNUMBER
trovati nelle tabelle dello schemaroot
.DATA_TYPE NUMBER(4\,0):integer
indica a Database Migration Service di convertire valoriNUMBER(4,0)
specifici in PostgreSQLINTEGER
.- La direttiva
MODIFY_TYPE
consente a Database Migration Service di convertire specificamente i dati nella colonnadates_and_times
della tabella di origineevents
nel tipoDATETIME
di PostgreSQL, indipendentemente dal formato effettivo della colonna di origine. REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname)
consente a Database Migration Service di rinominare le seguenti colonne nello schema convertito:- La colonna
dates_and_times
nella tabellaevents
di origine viene rinominata inevent_dates
nella stessa tabella nello schema convertito. - La colonna
pseudonym
nella tabellausers
di origine viene rinominata innickname
nella stessa tabella nello schema convertito.
events
eusers
nello schemaroot
.- La colonna
REPLACE_TABLES events:login_events users:platform_users
rinomina le seguenti tabelle nello schema convertito:- La tabella
events
viene rinominata inlogin_events
. - La tabella
users
viene rinominata inplatform_users
.
events
eusers
nello schemaroot
.- La tabella
Workspace di conversione legacy
Gli spazi di lavoro della conversione legacy sono un tipo di spazi di lavoro della conversione precedente e più limitato. Le aree di lavoro di conversione precedenti non supportano le funzionalità di conversione migliorate di Gemini o l'editor SQL interattivo. Puoi utilizzarli solo per convertire lo schema di origine con lo strumento di migrazione Ora2Pg.
Ti sconsigliamo di utilizzare il tipo precedente di spazi di lavoro per le conversioni per le migrazioni. Se il tuo scenario richiede l'utilizzo di aree di lavoro di conversione precedenti, consulta Utilizzare le aree di lavoro di conversione precedenti.
Passaggi successivi
- Per scoprire come utilizzare lo spazio di lavoro della conversione interattivo, consulta Creare uno spazio di lavoro della conversione interattivo.