自動物件名稱對應

目標表格名稱取自 MAP 敘述句的 TARGET 子句,而目標資料欄名稱取自歷程檔描述資料中的來源資料欄名稱。

「自動綱要發展」功能目前僅在目標資料庫 CHARSET 與來源資料庫 CHARSET 相同,或來源資料庫 CHARSET 的超集時,才支援物件名稱對應。在其他情況下,會報告適當的錯誤訊息。

如果來源的表格或資料欄名稱長度太長 (目標資料庫不支援此長度),或表格或資料欄名稱包含不支援的字元 (目標資料庫不支援此長度),Replicat 就會出現適當的錯誤訊息。

若要繼續,必須採取下列其中一個更正動作:

針對「自動綱要演進」所產生之表格或資料欄名稱的區分大小寫,取決於來源和目標資料庫的區分大小寫規則,並受下列規則管理。

  1. 在區分大小寫的來源資料庫到區分大小寫的目標資料庫複製案例中,會引用並使用所有名稱。

  2. 至於其他來源至目標的組合,包含區分大小寫至不區分大小寫、不區分大小寫至不區分大小寫,以及不區分大小寫至區分大小寫的規則,則遵循下列規則:

    1. 表格名稱的使用方式與 Replicat 參數檔中 MAP 敘述句之 TARGET 子句中指定的名稱完全相同。

    2. 除非在 Replicat 參數檔中 MAP 敘述句的 COLMAP 子句中明確引號,否則不會使用歷程檔中的資料欄名稱 (不含任何引號)。

如果資料欄名稱包含下列任一特殊字元或空格,則名稱會加上引號並使用。

'".,{}()[]|+-_%~^#@/!><*&$:=?;\

下列為下列使用案例的「自動綱要發展」所使用的物件命名慣例:

  1. 使用案例:區分大小寫的來源資料庫

    選項 行為

    如果您要複製至區分大小寫的目標資料庫,請將使用案例與下列項目搭配使用:

    • 來源表格名稱為 hr.employee

    • Column id 類型 int (主索引鍵)

    • 名稱類型 varchar

    如果 MAP 敘述句之 TARGET 子句中的目標表格名稱包含萬用字元,則在目標表格使用與來源名稱相同的名稱和大小寫,並加上引號。

    範例:

    Replicat 參數檔中的 MAP 敘述句如下

    MAP hr.*, TARGET region.*;

    「自動綱要發展」功能會在區分大小寫的目標資料庫上產生 DDL,如下所示:

    CREATE TABLE "region"."employee" ( "id" int not null, "name" VARCHAR(20), primary key ("id"));

    備註:

    物件名稱 employee 引用在 CREATE TABLE DDL 中,因為來源與目標資料庫區分大小寫。

    如果您要複製至區分大小寫的目標資料庫,請將使用案例與下列項目搭配使用:

    • 來源表格名稱為 hr.employee

    • Column id 類型 int (主索引鍵)

    • 名稱類型 varchar

    如果 MAP 敘述句之 TARGET 子句中的目標表格名稱包含明確的名稱,則在目標表格使用與來源名稱相同的名稱和大小寫,並加上引號。

    範例:

    Replicat 參數檔中的 MAP 敘述句如下:

    MAP hr.employee, TARGET region.employee, COLMAP(USEDEFAULTS, "EMPNAME" = name); 

    「自動綱要發展」功能會在區分大小寫的目標資料庫上產生 DDL,如下所示:

    CREATE TABLE "region"."employee" ( "id" int not null, "EMPNAME" VARCHAR(20), primary key ("id"));

    備註:

    物件名稱 employee 在 CREATE TABLE DDL 中沒有引號,因為 MAP 陳述式之 TARGET 子句中的物件名稱沒有引號。

    如果您要複製至不區分大小寫的目標資料庫,請將使用案例納入下列考量:

    • 來源表格名稱為 hr.employee

    • Column id 類型 int (主索引鍵)

    • 名稱類型 varchar

    如果 MAP 敘述句之 TARGET 子句中的目標表格名稱包含萬用字元,則目標表格會使用與來源名稱相同的名稱和大小寫。

    範例:

    Replicat 參數檔中的 map 敘述句如下:

    MAP hr.*, TARGET region.*;

    「自動綱要發展」功能會在不區分大小寫的目標資料庫上產生 DDL,如下所示:

    CREATE TABLE region.employee (id int not null, name VARCHAR(20), primary key (id));

    備註:

    物件名稱 employee 在 CREATE TABLE DDL 中沒有引號,因為目標子句具有未引號的萬用字元名稱。

    如果您要複製至不區分大小寫的目標資料庫,請將使用案例納入下列考量:

    • 來源表格名稱為 hr.employee

    • Column id 類型 int (主索引鍵)

    • 名稱類型 varchar

    如果 MAP 敘述句之 TARGET 子句中的目標表格名稱包含明確的名稱,則目標表格會使用與來源名稱相同的名稱和大小寫。

    範例:

    Replicat 參數檔中的 MAP 敘述句如下:

    MAP hr.employee, TARGET region."employee", COLMAP(USEDEFAULTS, "EMPNAME" = name);

    「自動綱要發展」功能會在不區分大小寫的目標資料庫上產生 DDL,如下所示:

    CREATE TABLE region."employee" ( id int not null, "EMPNAME" VARCHAR(20), primary key (id));

    備註:

    物件名稱 employee 在 CREATE TABLE DDL 中加上引號,作為 MAP 陳述式之 TARGET 子句中的物件名稱。EMPNAME 在 DDL 中為引號,因為其在 COLMAP 子句中指定為引號
  2. 使用案例:不區分大小寫的來源資料庫

    選項 行為

    如果您要複製至區分大小寫的目標資料庫,請將使用案例納入下列考量:

    • 來源表格名稱為 hr.employee

    • Column id 類型 int (主索引鍵)

    • 名稱類型 varchar

    如果 MAP 敘述句之 TARGET 子句中的目標表格名稱包含萬用字元,則目標表格會使用與來源名稱相同的名稱和大小寫。

    範例:

    Replicat 參數檔中的 MAP 敘述句如下:

    MAP hr.*, TARGET region.*;

    「自動綱要發展」功能會在區分大小寫的目標資料庫上產生 DDL,如下所示:

    CREATE TABLE region.employee ( id int not null, name VARCHAR(20), primary key (id));

    備註:

    物件名稱 employee 在 CREATE TABLE DDL 中沒有引號,因為目標子句具有未引號的萬用字元名稱。

    如果您要複製至區分大小寫的目標資料庫,請將使用案例納入下列考量:

    • 來源表格名稱為 hr.employee

    • Column id 類型 int (主索引鍵)

    • 名稱類型 varchar

    如果 MAP 敘述句之 TARGET 子句中的目標表格名稱包含明確的名稱,則目標表格會使用與來源名稱相同的名稱和大小寫。

    範例:

    Replicat 參數檔中的 MAP 敘述句如下:

    MAP hr.employee, TARGET region.employee, COLMAP(USEDEFAULTS, "EMPNAME" = name);

    「自動綱要發展」功能會在區分大小寫的目標資料庫上產生 DDL,如下所示:

    CREATE TABLE region.employee ( id int not null, "EMPNAME" VARCHAR(20), primary key (id));

    備註:

    物件名稱 employee 在 CREATE TABLE DDL 中沒有引號,因為 MAP 陳述式之 TARGET 子句中的物件名稱沒有引號。

    如果您要複製至不區分大小寫的目標資料庫,請將使用案例納入下列考量:

    • 來源表格名稱為 hr.employee

    • Column id 類型 int (主索引鍵)

    • 名稱類型 varchar

    如果 MAP 敘述句之 TARGET 子句中的目標表格名稱包含萬用字元,則目標表格會使用與來源名稱相同的名稱和大小寫。

    範例:

    Replicat 參數檔中的 MAP 敘述句如下:

    MAP hr.*, TARGET region.*;

    「自動綱要發展」功能會在不區分大小寫的目標資料庫上產生 DDL,如下所示:

    CREATE TABLE region.employee ( id int not null, name VARCHAR(20), primary key (id));

    備註:

    物件名稱 employee 在 CREATE TABLE DDL 中沒有引號,因為目標子句具有未引號的萬用字元名稱。

    如果您要複製至不區分大小寫的目標資料庫,請將使用案例納入下列考量:

    • 來源表格名稱為 hr.employee

    • Column id 類型 int (主索引鍵)

    • 名稱類型 varchar

    如果 MAP 敘述句之 TARGET 子句中的目標表格名稱包含明確的名稱,則目標表格會使用與來源名稱相同的名稱和大小寫。

    範例:

    Replicat 參數檔中的 MAP 敘述句如下:

    MAP hr.employee, TARGET region.employee, COLMAP(USEDEFAULTS, EMPNAME = name);

    「自動綱要發展」功能會在不區分大小寫的目標資料庫上產生 DDL,如下所示:

    CREATE TABLE region.employee ( id int not null, EMPNAME VARCHAR(20), primary key (id));

    備註:

    物件名稱 employee 在 CREATE TABLE DDL 中沒有引號,因為 MAP 陳述式之 TARGET 子句中的物件名稱沒有引號。