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を超える可能性があります。