自動物件名稱對應
目標表格名稱取自 MAP 敘述句的 TARGET 子句,而目標資料欄名稱取自歷程檔描述資料中的來源資料欄名稱。
「自動綱要發展」功能目前僅在目標資料庫 CHARSET 與來源資料庫 CHARSET 相同,或來源資料庫 CHARSET 的超集時,才支援物件名稱對應。在其他情況下,會報告適當的錯誤訊息。
如果來源的表格或資料欄名稱長度太長 (目標資料庫不支援此長度),或表格或資料欄名稱包含不支援的字元 (目標資料庫不支援此長度),Replicat 就會出現適當的錯誤訊息。
若要繼續,必須採取下列其中一個更正動作:
-
對於有問題的目標表格名稱,您必須在符合目標資料庫需求的
MAP設定中明確指定適當的目標表格名稱。 -
對於有問題的資料欄名稱,您必須在
MAP敘述句的COLMAP子句中明確指定符合目標資料庫需求的適當目標資料欄名稱。來源有一些限制可以支援此功能,例如不新增與目標資料欄之COLMAP子句中所指定名稱相同的任何新資料欄。
針對「自動綱要演進」所產生之表格或資料欄名稱的區分大小寫,取決於來源和目標資料庫的區分大小寫規則,並受下列規則管理。
-
在區分大小寫的來源資料庫到區分大小寫的目標資料庫複製案例中,會引用並使用所有名稱。
-
至於其他來源至目標的組合,包含區分大小寫至不區分大小寫、不區分大小寫至不區分大小寫,以及不區分大小寫至區分大小寫的規則,則遵循下列規則:
-
表格名稱的使用方式與 Replicat 參數檔中
MAP敘述句之TARGET子句中指定的名稱完全相同。 -
除非在 Replicat 參數檔中
MAP敘述句的COLMAP子句中明確引號,否則不會使用歷程檔中的資料欄名稱 (不含任何引號)。
-
如果資料欄名稱包含下列任一特殊字元或空格,則名稱會加上引號並使用。
'".,{}()[]|+-_%~^#@/!><*&$:=?;\
下列為下列使用案例的「自動綱要發展」所使用的物件命名慣例:
-
使用案例:區分大小寫的來源資料庫
選項 行為 如果您要複製至區分大小寫的目標資料庫,請將使用案例與下列項目搭配使用:
來源表格名稱為
hr.employeeColumn 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.employeeColumn 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.employeeColumn 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.employeeColumn 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子句中指定為引號 -
使用案例:不區分大小寫的來源資料庫
選項 行為 如果您要複製至區分大小寫的目標資料庫,請將使用案例納入下列考量:
來源表格名稱為
hr.employeeColumn 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.employeeColumn 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.employeeColumn 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.employeeColumn 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子句中的物件名稱沒有引號。