COLMAP句でマップされる列の指定
COLMAPの構文は次のとおりです。
COLMAP ([USEDEFAULTS, ]target_column=source_expression)
この構文でtarget_columnはターゲット列の名前とsource_expressionです。source_expressionsの例を次に示します。
-
ソース列の名前(
ORD_DATEなど)。 -
数値定数(
123など)。 -
一重引用符で囲まれた文字列定数(
'ABCD'など)。 -
Oracle GoldenGate列変換関数を使用する式。
COLMAP文内で、Oracle GoldenGate列変換関数のいずれかを使用して、マップされた列のデータを変換できます。たとえば:@STREXT (COL1, 1, 3)
-
BEFORE column_nameの使用例を示します。BEFORE ORD_DATE -
AFTER column_nameの使用例を示します。AFTER ORD_DATE。列名がリストされている場合、これがデフォルトのオプションです。
列マッピングに、異なるデータベース・タイプに由来する、大/小文字が区別される複数の列が関係する場合、各列を、データベースに格納されているとおりに指定してください。
-
大/小文字を区別するために二重引用符が必要になるデータベースの場合は、大/小文字が区別される列名を二重引用符で囲んで指定してください。
-
大/小文字は区別されるが二重引用符が必要ないデータベースの場合は、列名を、データベースに格納されているとおりに指定してください。
次は、Oracleデータベースのターゲット列と、大/小文字が区別されるSQLサーバー・データベースのソース列との間でのマッピングを示しています。
COLMAP ("ColA" = ColA)
Oracle GoldenGateへの名前の指定の詳細は、「Oracle GoldenGateの入力におけるオブジェクト名の指定」を参照してください。
文字セットとロケールが異なるデータベース間でソース列とターゲット列をマップする場合のグローバリゼーションに関する考慮事項については、「データ・マッピング時のグローバリゼーションに関する考慮事項」を参照してください。
COLMAPを使用してキー列に値をマップ(主キーの更新操作が発生)しないでください。Oracle GoldenGateがターゲット行の特定に使用するWHERE句では、キー列の正しい変更前イメージが使用されません。かわりに、変更後イメージが使用されます。このため、SQLEXEC文などのキー列に基づく関数を使用している場合、エラーになります。
列マッピングの制限
-
LOB列は、FILTER列、WHERE列、またはCOLMAP文のsource_expressionとしては使用できません。LOB列は、BLOB、CLOB、NCLOB、XMLType、ユーザー定義データ型、ネストした表、VARRAYsおよびその他の特別なデータ型です。 -
ソース列に4000バイトを超える値が含まれる場合、値は
LOBレコードとして証跡に格納されるため、変換ルーチンでこの列を使用することはできません。たとえば、OracleのVARCHAR2(4000 CHAR)と日本語の文字セットは、それぞれの文字を3バイトとして保存します。これは、列の長さが12000バイトになり、Oracle GoldenGateではこの値がLOBフィールドとして格納されることを意味します。 -
Oracle GoldenGateが実行する完全な全SQL文のサイズは、4MBを超えます。たとえば、数千の
VARCHAR2(4000)列を持つ表があり、それぞれに4000バイトを配置する場合、Oracle GoldenGateで実行される合計のSQL文が、最大サイズの4MBを超える可能性があります。