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 |
列名に基づいてマップします。 列名で大/小文字が区別され、データベースで大/小文字が区別されるために引用符が必要な場合、列名を二重引用符で囲みます。これらのデータベース・タイプでは、Oracle GoldenGateは、引用符で囲まれていない列名を大/小文字の区別がされないものとして扱います。 大/小文字の区別はサポートしているが引用符が必要ないデータベースの場合は、列名を、データベースに格納されているとおりに指定してください。
COLMATCH NAMES "aBc" = aBc |
PREFIX |
指定した名前接頭辞または名前接尾辞を無視します。 データベースで大/小文字が区別されるために引用符が必要な場合、接頭辞または接尾辞を二重引用符で囲みます。たとえば、" 大/小文字の区別はサポートしているが引用符が必要ないデータベースの場合は、接頭辞または接尾辞を、データベースに格納されているとおりに指定してください。たとえば、 次の例では、大/小文字が区別されない接頭辞を無視するよう指定しています。ターゲット列名 COLMATCH PREFIX p_ 次の例では、大/小文字が区別される SUFFIX "_k" |
RESET |
前に定義した |
次の例は、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表では無効化されます。これらの表のソース列とターゲット列は、名前がすべて同一であるため、自動的にマップされます。