COLMATCHによるグローバル列マッピングの構成

COLMATCHパラメータでは、列マッピングのグローバル・ルールを作成します。COLMATCHでは、同じデータセットに対して異なる列名を持つ類似した構造の表どうしをマップできます。このタイプの列をマップする場合、個別のTABLE文またはMAP文のCOLMAP句で表レベルのマッピングを使用するより、COLMATCHの方が簡単です。

大/小文字の区別は次のようにサポートされます。

  • MySQL、SQL ServerおよびTeradataの場合、データベースの大/小文字が区別されるときは、COLMATCHでは、名前が引用符で囲まれて指定されているかどうかにかかわらず、大/小文字と名前が完全に一致するものが検索されます。

  • 同じデータベース内で名前の大/小文字を区別することも区別しないことも可能なOracle DatabaseおよびDB2データベースで、大/小文字を区別するために二重引用符が必要になる場合、COLMATCHでは、名前が引用符で囲まれているとき、大/小文字と名前がデータベースと完全に一致することが求められます。

構文

COLMATCH
{NAMES target_column = source_column |
PREFIX prefix |
SUFFIX suffix |
RESET}
引数 説明
NAMES target_column = source_column

列名に基づいてマップします。

列名で大/小文字が区別され、データベースで大/小文字が区別されるために引用符が必要な場合、列名を二重引用符で囲みます。これらのデータベース・タイプでは、Oracle GoldenGateは、引用符で囲まれていない列名を大/小文字の区別がされないものとして扱います。

大/小文字の区別はサポートしているが引用符が必要ないデータベースの場合は、列名を、データベースに格納されているとおりに指定してください。

COLMATCHがデータベース・タイプが異なる列に適用される場合、それぞれの名前で大/小文字の区別が適切に表現されていることを確認してください。たとえば、次の例では、Oracle Database内の大/小文字が区別されるターゲット列名"aBc"と、大/小文字が区別されるSQL Serverデータベース内の、大/小文字が区別されるソース列名aBcを指定しています。

COLMATCH NAMES "aBc" = aBc
PREFIX prefix | SUFFIX suffix

指定した名前接頭辞または名前接尾辞を無視します。

データベースで大/小文字が区別されるために引用符が必要な場合、接頭辞または接尾辞を二重引用符で囲みます。たとえば、"P_"です。それらのデータベース・タイプでは、引用符で囲まれていない接頭辞または接尾辞を大/小文字の区別がされないものとして扱います。

大/小文字の区別はサポートしているが引用符が必要ないデータベースの場合は、接頭辞または接尾辞を、データベースに格納されているとおりに指定してください。たとえば、P_は、大文字の接頭辞Pを指定しています。

次の例では、大/小文字が区別されない接頭辞を無視するよう指定しています。ターゲット列名P_ABCはソース列名ABCにマップされ、ターゲット列名P_abcはソース列名abcにマップされます。

COLMATCH PREFIX p_

次の例では、大/小文字が区別されるsuffixを無視するよう指定しています。ターゲット列名ABC_kはソース列名ABCにマップされ、ターゲット列名"abc_k"はソース列名"abc"にマップされます。

SUFFIX "_k"
RESET

前に定義したCOLMATCHルールを、後続のTABLE文またはMAP文で無効化します。

次の例は、COLMATCH. を使用するタイミングを示していますソース表とターゲット表は、表名と列名がわずかに異なる点を除いて同一です。データベースでは大文字と小文字は区別されません。

ACCT表 ORD表
CUST_CODE
CUST_NAME
CUST_ADDR
PHONE
S_REP
S_REPCODE
CUST_CODE
CUST_NAME
ORDER_ID
ORDER_AMT
S_REP
S_REPCODE
ACCOUNT表 ORDER表
CUSTOMER_CODE
CUSTOMER_NAME
CUSTOMER_ADDRESS
PHONE
REP
REPCODE
CUSTOMER_CODE
CUSTOMER_NAME
ORDER_ID
ORDER_AMT
REP
REPCODE

この例でソース列をターゲット列にマップし、同時に他の表で後続のマップを処理するには、次の構文を使用します。

COLMATCH NAMES CUSTOMER_CODE = CUST_CODE
COLMATCH NAMES CUSTOMER_NAME = CUST_NAME
COLMATCH NAMES CUSTOMER_ADDRESS = CUST_ADDR
COLMATCH PREFIX S_
MAP SALES.ACCT, TARGET SALES.ACCOUNT, COLMAP (USEDEFAULTS);
MAP SALE.ORD, TARGET SALES.ORDER, COLMAP (USEDEFAULTS);
COLMATCH RESET
MAP SALES.REG, TARGET SALE.REG;
MAP SALES.PRICE, TARGET SALES.PRICE;

この例のルールに基づいて、次の処理が発生します。

  • データは、ソースのACCT表およびORD表のCUST_CODE列から、ターゲットのACCOUNT表およびORDER表のCUSTOMER_CODE列にマップされます。

  • S_接頭辞は無視されます。

  • PHONE列やORDER_AMT列などの同じ名前を持つ列は、明示的なルールを必要とすることなく、USEDEFAULTSによって自動的にマップされます。

  • 前述のグローバル列マッピングは、REG表およびPRICE表では無効化されます。これらの表のソース列とターゲット列は、名前がすべて同一であるため、自動的にマップされます。