轉換工作區

轉換工作區可將來源資料庫中的結構定義和物件,轉換為與目的地資料庫相容的 SQL 語法。本頁提供資料庫遷移服務轉換工作區的總覽:

Oracle 遷移作業不支援某些資料類型。詳情請參閱「 資料類型的已知限制」。

來源結構定義初始化選項

為轉換資料庫結構定義,資料庫遷移服務需要來源資料庫物件的初始快照。您可以透過下列兩種方式提供這項資訊:

  • 直接連線至資料庫:資料庫遷移服務會透過連線設定檔,直接連線至執行中的來源資料庫,並透過網路連線擷取結構定義。
  • Cloud Storage 中的結構定義檔案:您可以使用 Google 提供的擷取指令碼,在本機擷取結構定義中繼資料,將產生的檔案上傳至 Cloud Storage bucket,並在不連線至來源資料庫的情況下準備工作區。

如要瞭解如何透過直接資料庫連線或 Cloud Storage 中的結構定義檔案建立轉換工作區,請參閱「建立轉換工作區」。

轉換進度總覽

轉換工作區提供詳盡的總覽資訊,可讓您深入瞭解未解決或已解決的轉換問題總數、Gemini 輔助增強功能,以及轉換程序的整體健康狀態。

轉換工作區畫面,其中包含「轉換總覽」分頁,可查看已轉換的物件數量、轉換問題,以及 Gemini 輔助轉換強化功能。
圖 1. 轉換工作區總覽畫面,您可以在這裡監控轉換進度、查看問題,以及檢查產生的 PostgreSQL 程式碼。(按一下可放大)
轉換工作區畫面,其中包含「轉換總覽」分頁,可查看已轉換的物件數量、轉換問題,以及 Gemini 輔助轉換強化功能。

您可以使用這個檢視畫面,依類型、問題嚴重性、敬請採取行動或轉換狀態,篩選結構定義中的物件。

轉換工作區畫面,顯示如何依類型或狀態篩選已轉換的物件。
圖 2. 依狀態和物件類型篩選的已轉換物件。(按一下可放大)
轉換工作區畫面,顯示如何依類型或狀態篩選已轉換的物件。

如要進一步瞭解如何使用轉換總覽檢查轉換結果,請參閱「 使用轉換工作區」。

確定性程式碼和結構定義轉換

建立轉換工作區時,資料庫遷移服務會立即使用一組確定性轉換規則,執行初始結構定義轉換,將特定 Oracle 資料類型和物件對應至特定 PostgreSQL 資料類型和物件。這項程序僅支援特定 Oracle 資料庫物件。

確定性程式碼轉換支援下列 Oracle 資料庫物件:

支援的 Oracle 結構定義元素

  • 限制
  • 索引 (僅限與資料表在相同結構定義中建立的索引)
  • materialized view
  • 物件類型 (部分支援)
  • 序列
  • 同義詞
  • Tables
  • 瀏覽次數

支援的 Oracle 程式碼元素

  • 觸發條件 (僅限資料表層級)
  • 套件
  • 函式
  • 預存程序

互動式 SQL 編輯器

您可以使用互動式 SQL 編輯器,直接在資料庫遷移服務中修改轉換後的 PostgreSQL 語法。您可以使用這項功能修正轉換問題,或調整結構定義,更符合需求。部分物件無法在內建編輯器中修改。

可編輯的 Oracle 物件

轉換來源資料庫程式碼和結構定義後,您可以使用互動式編輯器,修改為特定類型物件生成的 SQL。編輯器支援下列 Oracle 物件:

  • 資料表觸發條件 (需要權限)
  • materialized view
  • 套件
  • 函式、預存程序
  • 同義詞
  • 瀏覽次數
  • 限制
  • 索引
  • 序列

此外,部分物件雖然會轉換,但無法直接在資料庫遷移服務中編輯。如要修改這類物件,請在 套用轉換後的結構定義和程式碼後,直接在目的地資料庫執行更新。

不支援編輯功能的物件:

  • 使用者定義的物件類型
  • Tables
  • 結構定義

使用 Gemini 加速轉換程式碼和結構定義

資料庫遷移服務將 Gemini for Google Cloud 整合至轉換工作區,協助您在下列領域加快及改善轉換程序:

  • 運用 Gemini 輔助的自動轉換功能,強化確定性轉換結果,充分發揮 AI 的強大功能,大幅減少 PostgreSQL 程式碼所需的手動調整次數。

  • 運用 Gemini 輔助的品質評估功能,確保轉換後的程式碼品質和功能等同於原始程式碼。這些評估會分析轉換後的程式碼,並與原始程式碼比較,提供正確性和功能方面的意見回饋。

  • 透過轉換助理提供程式碼可解釋性功能:這是一組專用提示詞,可協助您進一步瞭解轉換邏輯、提出轉換問題修正建議,或最佳化轉換後的程式碼。

  • Gemini 程式碼轉換建議可讓您更快修正轉換問題。Gemini 模型會學習您修正轉換問題的方式,並建議如何變更工作區中的其他錯誤物件。

如要進一步瞭解 Gemini 輔助轉換,請參閱下列頁面:

轉換對應檔案

您可以使用轉換對應檔案自訂轉換邏輯。轉換對應檔案是文字檔案,其中包含精確的操作說明 (稱為「轉換指令」),說明如何將 Oracle 物件轉換為 PostgreSQL 物件。

支援的轉換指令

資料庫遷移服務支援下列轉換對應檔案的轉換指令:

EXPORT_SCHEMA

EXPORT_SCHEMA 是所有轉換對應檔案的必要指令。資料庫遷移服務需要這項指示,確保來源結構定義轉換為正確的目的地結構定義。請確認轉換對應檔案包含以下這行:

EXPORT_SCHEMA 1

SCHEMA

資料庫遷移服務必須能判斷哪個結構定義包含應以轉換指令修改的物件。SCHEMA 指令會使檔案中提供的所有其他自訂指令套用至這個特定結構定義中的物件。

  • 使用這項指令時,資料庫中的其他結構定義也會一併轉換,但其物件不會經過任何修改。
  • 如果您在轉換對應檔案中加入這項指令,所有自訂設定都只會套用至這個特定結構定義中的物件。
  • 如果略過這項指令,則必須提供完整的物件名稱,其中包含由其他轉換指令修改的物件結構定義名稱。舉例來說,您必須使用 "SCHEMA_NAME.SOURCE_TABLE_NAME",而非 SOURCE_TABLE_NAME REPLACE_TABLES 指令。
  • 如要自訂不同結構定義中的物件,請嘗試下列做法:
    • 為其他結構定義建立個別的轉換對應檔案,並上傳至轉換工作區。
    • 如果物件所在的結構定義與您提供給 SCHEMA 指令的結構定義不同,請使用包含結構定義名稱的完整物件名稱。

請使用下列格式:

SCHEMA SCHEMA_NAME

其中 SCHEMA_NAME 是來源資料庫中的結構定義名稱。

CASE_HANDLING

根據預設,資料庫遷移服務會將所有物件名稱轉換為小寫。 您可以使用 CASE_HANDLING 指令修改這項行為。

  • 這項指令不受 SCHEMA 指令影響。 這項設定適用於全球,會影響轉換工作區中的所有物件。
  • RENAME_*、MOVE_* 和 REPLACE_* 指令的優先順序高於 CASE_HANDLING 指令,且無論 CASE_HANDLING 屬性為何,都會完全重新命名物件。
  • 如果這項指令存在於多個設定檔中,且值相互衝突,資料庫遷移服務會在匯入結構定義時引發錯誤。

請使用下列格式:

CASE_HANDLING OPTION

其中 OPTION 可以是下列其中一項:

  • UPPERCASE:將所有物件名稱轉換為大寫。
  • LOWERCASE:將所有物件名稱轉換為小寫 (預設行為)。
  • PRESERVE_ORIGINAL:保留來源結構定義的原始大小寫。如果應用程式使用區分大小寫的 ID,這項功能就非常實用。

範例:

CASE_HANDLING PRESERVE_ORIGINAL

GENERATE_MISSING_PK

沒有主鍵的資料表無法保證複製作業的一致性。 資料庫遷移服務只會遷移具有主鍵的資料表。根據預設,當您 轉換原始碼和結構定義時,資料庫遷移服務轉換工作區會自動在目的地資料表中建立任何缺少的主鍵。

您可以使用 GENERATE_MISSING_PK 指令,控管自動產生主鍵的功能。如要停用自動產生金鑰功能,請將這項指令設為 0。

範例:

GENERATE_MISSING_PK 0

這項指令會影響特定轉換工作區中的所有物件。您無法僅針對特定資料表停用自動產生主鍵功能。

資料庫遷移服務只能遷移在轉換後的 PostgreSQL 版本中,具有主鍵限制的資料表。如果停用自動產生主鍵功能,則必須在套用轉換後的結構定義後,手動在目的地資料庫的轉換資料表中建立主鍵或不重複限制。展開下列各節,查看 SQL 指令範例。

使用現有資料欄建立主鍵

資料表可能已有根據資料欄或資料欄組合建立的邏輯主鍵。舉例來說,某些資料欄可能設有專屬限制或索引。使用這些資料欄,為來源資料庫中的資料表產生新的主鍵。例如:

ALTER TABLE TABLE_NAME
ADD PRIMARY KEY (COLUMN_NAME);

使用所有資料欄建立主鍵

如果沒有可做為主鍵的現有限制,請使用資料表的所有資料欄建立主鍵。請確認主鍵長度未超過 PostgreSQL 叢集允許的上限。例如:

ALTER TABLE TABLE_NAME
ADD PRIMARY KEY (COLUMN_NAME_1, COLUMN_NAME_2, COLUMN_NAME_3, ...);

建立這類複合主鍵時,您必須明確列出要使用的所有資料欄名稱。您無法使用陳述式擷取所有資料欄名稱來達到這個目的。

使用 ROWID 虛擬資料欄建立不重複限制

Oracle 資料庫會使用 ROWID 虛擬資料欄,儲存資料表中各列的位置。如要遷移沒有主鍵的 Oracle 資料表,您可以在目的地 PostgreSQL 資料庫中新增 ROWID 資料欄。資料庫遷移服務會使用來源 Oracle ROWID 虛擬資料欄中的對應數值填入資料欄。

如要新增資料欄並設為主鍵,請執行下列指令:

ALTER TABLE TABLE_NAME ADD COLUMN rowid numeric(33,0) NOT NULL;
CREATE SEQUENCE TABLE_NAME_rowid_seq INCREMENT BY -1 START WITH -1 OWNED BY TABLE_NAME.rowid;
ALTER TABLE TABLE_NAME ALTER COLUMN rowid SET DEFAULT nextval('TABLE_NAME_rowid_seq');
ALTER TABLE TABLE_NAME ADD CONSTRAINT CONSTRAINT_DISPLAY_NAME PRIMARY KEY (rowid);

重新命名物件 (RENAME_*)

您可以在轉換期間重新命名不同的資料庫物件。資料庫遷移服務會自動更新所有程式碼參照 (檢視表、預存程序、函式等),以使用新名稱。

一般語法

RENAME_OBJECT_TYPE SOURCE_NAME1:DESTINATION_NAME1 SOURCE_NAME2:DESTINATION_NAME2 ...

重要事項

  • RENAME_* 指令會區分大小寫,並優先於 CASE_HANDLING 指令。舉例來說,如果同時使用這兩項指令:

    SCHEMA MySchema
    CASE_HANDLING PRESERVE_ORIGINAL
    # Destination objects are renamed exactly
    # to 'SoMe_tAbLe' and 'RenamedView', respecting the case
    # despite the CASE_HANDLING directive
    RENAME_TABLES some_table:SoMe_tAbLe
    RENAME_VIEWS MyView:RenamedView
    
  • 對於 SOURCE_NAME,請一律參照原始物件名稱,即使您使用其他指令 (例如 MOVE_*) 也是如此。舉例來說,如要重新命名其中一個檢視表物件,並將其移至新的結構定義,請參閱這兩個指令的原始檢視表名稱:

    RENAME_VIEWS MyView:MyRenamedView
    MOVE_VIEWS MyView:MyOtherSchema
    
  • RENAME_TABLES 指令會覆寫單一檔案中的 REPLACE_TABLES 指令。如要同時重新命名及移動資料表,建議改用 MOVE_* 指令。
  • SOURCE_NAME 變數的完整格式取決於您是否也使用 SCHEMA 指令:

    • 使用 SCHEMA 指令:使用不完整的名稱,例如 MyTable。
    • 不使用 SCHEMA 指令:使用完整名稱,例如 MySchema.MyTable。

支援的 RENAME_* 指令

  • RENAME_SCHEMA:重新命名結構定義。
    單一設定檔只能包含一個 RENAME_SCHEMA 指令。如果提供 SCHEMA 指令,RENAME_SCHEMA 只能重新命名該特定結構定義。
  • RENAME_TABLES:重新命名資料表。覆寫同一個檔案中的 REPLACE_TABLES。
  • RENAME_COLUMNS:重新命名資料表中的資料欄。 覆寫同一個檔案中的 REPLACE_COLS 指令。 請使用下列格式:
    RENAME_COLUMNS TABLE1.SRC_COL:DEST_COL TABLE2.SRC_COL:DEST_COL

    如果使用 SCHEMA 指令,請使用不完整的資料表名稱。如果不使用 SCHEMA 指令,請加入完整的資料表名稱,例如 SCHEMA.TABLE1。

  • RENAME_VIEWS
  • RENAME_MATERIALIZED_VIEWS
  • RENAME_SEQUENCES
  • RENAME_FUNCTIONS
  • RENAME_STORED_PROCEDURES
  • RENAME_TRIGGERS
  • RENAME_PACKAGES:資料庫遷移服務會將 Oracle 套件轉換為 PostgreSQL 結構定義。如果結構定義包含名稱相同的套件,PostgreSQL 程式碼在嘗試建立兩個名稱相同的結構定義時,可能會發生名稱衝突。您可以使用這項指令避免這類衝突。

    舉例來說,如果您有 SALES.REPORTING_PKG 和 HR.REPORTING_PKG 等套件,可以將其重新命名為不同的名稱:

    RENAME_PACKAGES SALES.UTILS:SALES_UTILS
    RENAME_PACKAGES HR.UTILS:HR_UTILS
    
  • RENAME_USER_DEFINED_TYPES

    可用的別名:RENAME_UDTS。

移動物件 (MOVE_*)

您可以將物件移至目的地資料庫中的不同結構定義。 這項功能在遷移期間重新整理資料庫結構時非常實用。資料庫遷移服務會自動更新檢視表、預存程序、函式等中的所有程式碼參照。

一般語法

MOVE_OBJECT_TYPE SOURCE_NAME1:DESTINATION_SCHEMA1 SOURCE_NAME2:DESTINATION_SCHEMA2 ...

重要事項

  • 對於 SOURCE_NAME,請一律參照原始物件名稱,即使您使用其他指令 (例如 RENAME_*) 也是如此。舉例來說,如要重新命名其中一個檢視表物件,並將其移至新的結構定義,請參閱這兩個指令的原始檢視表名稱:

    RENAME_VIEWS MyView:MyRenamedView
    MOVE_VIEWS MyView:MyOtherSchema
    
  • 指令只需要 DESTINATION_SCHEMA 名稱,而非完整物件名稱。
  • SOURCE_NAME 變數的完整格式取決於您是否也使用 SCHEMA 指令:

    • 使用 SCHEMA 指令:使用不完整的名稱,例如 MyTable。
    • 不使用 SCHEMA 指令:使用完整名稱,例如 MySchema.MyTable。

支援的 MOVE_* 指令

  • MOVE_TABLES:將資料表移至其他結構定義。在單一設定檔中,優先順序高於 REPLACE_TABLES,用於結構定義變更。
  • MOVE_VIEWS
  • MOVE_MATERIALIZED_VIEWS
  • MOVE_SEQUENCES
  • MOVE_FUNCTIONS
  • MOVE_STORED_PROCEDURES
  • MOVE_USER_DEFINED_TYPES

    可用的別名:MOVE_UDTS。

範例:重新整理結構定義

SCHEMA LegacyApp

# Moves the 'LegacyApp.Users' and 'LegacyApp.Orders' tables
# to the 'data' schema.
MOVE_TABLES Users:data Orders:data

# Moves the 'LegacyApp.CreateUser' and 'LegacyApp.ProcessOrder'
# stored procedures to the 'api' schema
MOVE_STORED_PROCEDURES CreateUser:api ProcessOrder:api

# Moves the 'LegacyApp.SalesSummary' views to the 'reporting' schema
MOVE_VIEWS SalesSummary:reporting

DATA_TYPE

您可以使用這個指令,在 Oracle 和 PostgreSQL 語法之間明確對應任何支援的資料類型。這個指令需要以半形逗號分隔的對應關係清單。整個定義必須在同一行中提供,但您可以在設定檔中加入多個 DATA_TYPE 指令。請使用下列格式:

DATA_TYPE ORACLE_DATA_TYPE1:PGSQL_DATA_TYPE1
DATA_TYPE ORACLE_DATA_TYPE2:PGSQL_DATA_TYPE2...

其中 ORACLE_DATA_TYPE 和 PGSQL_DATA_TYPE 是您在遷移作業中使用的 Oracle 和 PostgreSQL 版本支援的資料類型。如要瞭解支援的版本,請參閱 情境總覽。

範例:

DATA_TYPE REAL:double precision,SMALLINT:integer

如要進一步瞭解 Oracle 和 PostgreSQL 資料類型,請參閱:

MODIFY_TYPE

MODIFY_TYPE 指令可讓您控管資料庫遷移服務將來源資料表中的特定資料欄轉換成何種資料類型。這項指令需要以半形逗號分隔的對應關係清單。 整個定義必須在同一行提供,但您可以在設定檔中加入多個 MODIFY_TYPE 指令。請使用下列格式:

MODIFY_TYPE SOURCE_TABLE_NAME1:COLUMN_NAME:EXPECTED_END_RESULT_DATA_TYPE
MODIFY_TYPE SOURCE_TABLE_NAME2:COLUMN_NAME:EXPECTED_END_RESULT_DATA_TYPE...

其中:

  • SOURCE_TABLE_NAME 是資料表的名稱,其中包含您要變更資料類型的資料欄。
  • COLUMN_NAME 是您要自訂轉換對應的資料欄名稱。
  • EXPECTED_END_RESULT_DATA_TYPE 是您要轉換後的資料欄使用的 PostgreSQL 資料類型。

範例:

MODIFY_TYPE events:dates_and_times:DATETIME,users:pseudonym:TEXT

PG_INTEGER_TYPE

根據預設,資料庫遷移服務會將 NUMBER(p,s) 類型轉換為 PostgreSQL DECIMAL(p,s) 類型。

您可以使用 PG_INTEGER_TYPE 指令修改這項行為。將值設為 1,並強制將所有具有精確度和規模 (NUMBER(p,s)) 類型的 NUMBER 轉換為 PostgreSQL smallint、integer 或 bigint 類型,具體取決於精確度位數。

在轉換對應檔案中加入下列設定:

PG_INTEGER_TYPE 1

PG_NUMERIC_TYPE

如要將所有 NUMBER 搭配精確度和規模 (NUMBER(p,s)) 類型轉換為 PostgreSQL real 或 float 類型 (依據精確度位數),請將這項指令設為 1。

如果將這項指令設為 0,NUMBER(p,s) 值會保留確切的原始值,並使用內部 PostgreSQL 資料類型。

在轉換對應檔案中加入下列設定:

PG_NUMERIC_TYPE 1

DEFAULT_NUMERIC

不含精確度的 NUMBER 預設轉換會根據您是否也使用 PG_INTEGER_TYPE 指令而變更:

  • 如果使用 PG_INTEGER 指令,沒有精確度的 NUMBER 會轉換為 DECIMAL 值。
  • 如果不使用 PG_INTEGER 指令,不含精確度的 NUMBER 會轉換為 BIGINT 值。

您可以修改這項行為,並使用 DEFAULT_NUMERIC 指令指定 NUMBER 類型應使用的資料類型,而不指定精確度點。請使用下列格式:

DEFAULT_NUMERIC POSTGRESQL_NUMERIC_DATA_TYPE

其中 POSTGRESQL_NUMERIC_DATA_TYPE 是下列其中一項:integer、smallint、bigint。

範例:

DEFAULT_NUMERIC integer

REPLACE_COLS

您可以使用 REPLACE_COLS 指令,重新命名轉換後結構定義中的資料欄。這項指令需要以半形逗號分隔的對應關係清單。

請使用下列格式:

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)...

其中:

  • SOURCE_TABLE_NAME 是資料表的名稱,其中包含您要變更名稱的資料欄。如果不使用 SCHEMA 指令,請務必使用完整的資料表名稱:SCHEMA_NAME.SOURCE_TABLE_NAME
  • SOURCE_COLUMN_NAME 是來源中要變更名稱的資料欄名稱。
  • DESTINATION_COLUMN_NAME 是您要在轉換後的結構定義中,為資料欄使用的新名稱。

範例:

REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname)

REPLACE_TABLES

您可以使用 REPLACE_TABLES 指令重新命名資料表,或將資料表移至新的結構定義。這個指令需要以空格分隔的對應清單。如要進一步瞭解各用途的語法,請展開下列各節。

如果不使用 SCHEMA 指令,請務必在來源和目的地變數中使用以引號括住的完整資料表名稱:

  • "SCHEMA_NAME.SOURCE_TABLE_NAME"
  • "SCHEMA_NAME.DESTINATION_TABLE_NAME"

重新命名資料表

如要重新命名已轉換結構定義中的資料表,請使用下列格式:

REPLACE_TABLES SOURCE_TABLE_NAME1:DESTINATION_TABLE_NAME1 SOURCE_TABLE_NAME2:DESTINATION_TABLE_NAME2

其中:

  • SOURCE_TABLE_NAME 是要在轉換後的結構定義中重新命名的來源資料表名稱。
  • DESTINATION_TABLE_NAME 是您要在轉換後的結構定義中,為資料表使用的新名稱。

範例:

REPLACE_TABLES "events:login_events" "users:platform_users"

在結構定義之間移動資料表

您可以使用這項指令,將結構定義前置字串新增至新資料表名稱,藉此在結構定義之間移動資料表。無論您如何為整個轉換檔案使用 SCHEMA 指令,都可以使用這項機制。例如:

REPLACE_TABLES "events:NEW_SCHEMA_NAME.login_events"
    

自訂資料類型的別名

使用轉換指令修改資料庫遷移服務轉換不同資料類型的方式時 (例如使用 DATA_TYPE、 MODIFY_TYPE 或 PG_NUMERIC_TYPE 指令),您可以使用別名,而非來源 SQL 資料類型。

展開下列部分,查看資料庫遷移服務支援的資料類型別名清單。

資料類型別名

別名 轉換為 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

轉換對應檔案範例

請參閱下列範例轉換對應檔案,其中使用了一些支援的結構定義轉換指令:

EXPORT_SCHEMA 1
SCHEMA root

# Preserve original casing for all objects
CASE_HANDLING PRESERVE_ORIGINAL

# Data type conversions
PG_NUMERIC_TYPE 0
PG_INTEGER_TYPE 1
DEFAULT_NUMERIC integer
DATA_TYPE NUMBER(4\,0):integer
MODIFY_TYPE events:dates_and_times:TIMESTAMP

# Renaming objects using the RENAME_* directives
# These allow case-sensitive destination names
RENAME_TABLES events:LoginEvents users:PlatformUsers
RENAME_COLUMNS events.dates_and_times:EventDates users.pseudonym:Nickname
RENAME_VIEWS InternalReport:FinInternalReport

# Moving objects to new schemas using the MOVE_* directives
MOVE_TABLES audit_log:archive
MOVE_VIEWS InternalReport:reporting

使用這個檔案的結果如下:

  • EXPORT_SCHEMA 1 是必要指令。
  • SCHEMA root 會導致其他指令套用至 root 結構定義中的物件,除非使用完整名稱。
  • CASE_HANDLING PRESERVE_ORIGINAL 可確保來源 root 結構定義中的所有物件名稱,在目的地中保留原始大小寫 (除非由 RENAME_* 指令覆寫)。
  • PG_INTEGER_TYPE 1 會讓資料庫遷移服務將 root 結構定義資料表中找到的所有 Oracle 數值資料類型,轉換為 PostgreSQL 專屬類型,而非 ANSI 可攜式數值類型。
  • DEFAULT_NUMERIC integer 會導致資料庫遷移服務將未指定精確度點的 NUMBER 值轉換為 PostgreSQL INTEGER 類型。
  • DATA_TYPE NUMBER(4\,0):integer 會導致資料庫遷移服務將特定 NUMBER(4,0) 值轉換為 PostgreSQL INTEGER。
  • MODIFY_TYPE events:dates_and_times:TIMESTAMP 指令會指示資料庫遷移服務,將 events 來源資料表 dates_and_times 欄中的資料,特別轉換為 PostgreSQL TIMESTAMP 類型。
  • RENAME_TABLES events:LoginEvents users:PlatformUsers 會重新命名資料表,並保留指定的大小寫:
    • events 資料表已重新命名為 LoginEvents。
    • users 資料表已重新命名為 PlatformUsers。
  • RENAME_COLUMNS events.dates_and_times:EventDates user.pseudonym:Nickname 會重新命名資料欄,並在目的地保留指定的大小寫:
    • 在 LoginEvents 資料表 (原始名稱為 events) 中,dates_and_times 欄已重新命名為 EventDates。
    • 在 PlatformUsers (原始名稱為 users) 中,pseudonym 欄已重新命名為 Nickname。
  • RENAME_VIEWS InternalReport:FinInternalReport 會將檢視畫面 InternalReport 重新命名為 FinInternalReport。
  • MOVE_TABLES audit_log:archive 會將 audit_log 資料表從 root 結構定義移至 archive 結構定義。
  • MOVE_VIEWS InternalReport:reporting 會將 InternalReport 檢視表移至 reporting 結構定義。由於 RENAME_VIEWS 指令,這個檢視畫面也會重新命名為 FinInternalReport。資料庫遷移服務會處理依附元件:先重新命名物件,再移動物件。

舊版轉換工作區

舊版轉換工作區是較舊且功能較有限的轉換工作區類型。舊版轉換工作區不支援 Gemini 強化轉換功能或互動式 SQL 編輯器。只能用於透過 Ora2Pg 遷移工具轉換來源結構定義。

不建議使用舊版轉換工作區進行遷移。如果您的情境需要使用舊版轉換工作區,請參閱「 使用舊版轉換工作區」。

後續步驟

如要瞭解如何使用轉換工作區,請參閱: