USEDEFAULTSを使用したデフォルトの列マッピングの有効化

COLMAPのUSEDEFAULTSオプションを使用すると、ソース列と対応するターゲット列の名前が同一の場合に、自動デフォルト列マッピングを指定できます。USEDEFAULTSを使用すると、すべてのターゲット列を明示的にマップする必要がないので、時間を節約できます。

デフォルト・マッピングの場合、Oracle GoldenGateはそれらの列をマッピングし、必要な場合は、データ型を、データ定義ファイルに基づいて変換します。明示的なマッピング文でマップされている列にはデフォルト・マッピングを指定しないでください。

次の列マッピングの例では、 ソース表ACCTBLとターゲット表ACCTTABのデフォルト列マッピングと明示的な列マッピングの使用について示します。両方の表の大半の列は同じで、次の点が異なります。

  • ソース表にはCUST_NAME列がありますが、ターゲット表にはNAME列があります。

  • ソース表の10桁のPHONE_NO列は、ターゲット表の個別のAREA_CODE列、PHONE_PREFIX列およびPHONE_NUMBER列に対応します。

  • ソース表の個別のYY列、MM列およびDD列は、ターゲット表の単一のTRANSACTION_DATE列に対応します。

これらの相違点に対処するため、USEDEFAULTSを使用して同じ列を自動的にマップし、異なる列には明示マッピングおよび変換関数を使用します。

次のサンプルは、MAPパラメータとTABLEパラメータのCOLMAPオプションを使用した列マッピングを示しています。ソース表ACCTBLからターゲット表ACCTTABへのマッピングについて説明します。

MAP SALES.ACCTBL, TARGET SALES.ACCTTAB,
                COLMAP (   USEDEFAULTS,
                           NAME = CUST_NAME,
                           TRANSACTION_DATE = @DATE ('YYYY-MM-DD', 'YY',YEAR, 'MM', MONTH, 'DD', DAY),
                           AREA_CODE = @STREXT (PHONE_NO, 1, 3),
                           PHONE_PREFIX = @STREXT (PHONE_NO, 4, 6),
                           PHONE_NUMBER = @STREXT (PHONE_NO, 7, 10)
)
;

表8-2 列マッピングの例

パラメータ文 説明
COLMAP

COLMAP文を開始します。

USEDEFAULTS,

ターゲット列の名前が同一の場合、ソース列をそのままマップします。

NAME = CUST_NAME,

ソース列CUST_NAMEをターゲット列NAMEにマップします。

TRANSACTION_DATE =
@DATE ('YYYY-MM-DD', 'YY', YEAR, 'MM', MONTH, 'DD', DAY),

@DATE列変換関数を使用して、ソースの日付列からターゲット列TRANSACTION_DATEにトランザクション日付を変換します。

AREA_CODE =
@STREXT (PHONE_NO, 1, 3),
PHONE_PREFIX =
@STREXT (PHONE_NO, 4, 6),
PHONE_NUMBER =
@STREXT (PHONE_NO, 7, 10))
;

@STREXT列変換関数を使用して、ソース列PHONE_NOを別々のターゲット列AREA_CODEPHONE_PREFIXおよびPHONE_NUMBERに変換します。

デフォルトの列マッピングでOracle GoldenGateが従うルールの詳細は、「デフォルトの列マッピングの理解」を参照してください。