自動オブジェクト名マッピング

ターゲット表名はMAP文のTARGET句から取得され、ターゲット列名は証跡メタデータのソース列名から取得されます。

自動スキーマ展開機能では、現在、ターゲット・データベースCHARSETがソース・データベースCHARSETと同じ場合、またはソース・データベースCHARSETのスーパーセットの場合のみ、オブジェクト名マッピングがサポートされます。それ以外の場合は、適切なエラーメッセージが報告されます。

ソースからの表または列の名前の長さが長すぎる場合(およびこの長さはターゲット・データベースでサポートされていません)、または表または列の名前にサポートされていない文字が含まれている場合(ターゲット・データベースでサポートされていない文字)、Replicatは適切なエラー・メッセージで異常終了します。

続行するには、次のいずれかの修正処理を実行する必要があります。

自動スキーマ展開用に生成される表名または列名の大/小文字の区別は、ソース・データベースおよびターゲット・データベースの大/小文字の区別ルールに依存し、次のルールによって管理されます。

  1. 大/小文字を区別するソース・データベースから大/小文字を区別するターゲット・データベースへのレプリケーション・シナリオでは、すべての名前が引用符で囲まれて使用されます。

  2. sourceから targetへのその他の組み合わせ(case-sensitiveから case-insensitive、case-insensitiveから case-insensitive、および case-insensitiveから case-sensitive)では、次の規則に従います。

    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は、MAP文のTARGET句のオブジェクト名が引用符で囲まれていないため、CREATE TABLE DDLでは引用符で囲まれていません。

    大/小文字を区別しないターゲット・データベースにレプリケートする場合は、次のユースケースを考慮してください:

    • ソース表名: 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は、MAP文のTARGET句のオブジェクト名が引用符で囲まれているため、CREATE TABLE DDLで引用符で囲みます。EMPNAMEは、COLMAP句で引用符付きとして指定されているため、DDLで引用符で囲みます。
  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は、MAP文のTARGET句のオブジェクト名が引用符で囲まれていないため、CREATE TABLE DDLでは引用符で囲まれていません。

    大/小文字を区別しないターゲット・データベースにレプリケートする場合は、次のユースケースを考慮してください:

    • ソース表名: 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は、MAP文のTARGET句のオブジェクト名が引用符で囲まれていないため、CREATE TABLE DDLでは引用符で囲まれていません。