Oracle® Fusion Middleware Oracle GoldenGateリファレンスfor Windows and UNIX 12c (12.2.0.1) E70112-04 |
|
前 |
次 |
適用対象
Extract
説明
FORMATASCII
パラメータでは、デフォルトのOracle GoldenGate正規フォーマットではなく、外部ASCIIフォーマットでデータを出力します。FORMATASCII
を使用すると、大半のデータベース・ロード・ユーティリティおよびASCII入力を必要とするその他のプログラムと互換性を持つように出力をフォーマットできます。このパラメータは、File-to-Database-Utility による初期ロード方式を使用するときに必要です。
FORMATASCII
文は、パラメータ・ファイル内のこの文以降のすべての抽出ファイルまたはトレイルに影響します。パラメータ・ファイル内の文の相対的な順序は重要です。ファイルまたはトレイルの指定の後にリストされた場合、FORMATASCII
は効力がありません。
制約事項
データがReplicatプロセスによって処理される場合は、FORMATASCII
を使用しないでください。Replicatはデフォルトの正規フォーマットを受け付けます。
FORMATSQL
またはFORMATXML
を使用しているときは、FORMATASCII
を使用しないでください。
データにLOBが含まれている場合、FORMATASCII
を使用しないでください。
ExtractがマルチバイトのDB2サブシステムに接続している場合、FORMATASCII
を使用しないでください。
Oracle GoldenGate DDLサポートがアクティブである場合、FORMATASCII
を使用しないでください。
指定した形式でトレイル出力の生成に使用可能な表メタデータはないため、FORMATASCIIをパススルー・モードでデータ・ポンプに使用しないでください。
デフォルト出力
表名や列名などのデータベース・オブジェクト名、およびCHAR
およびVARCHAR
データは、オペレーティング・システムのデフォルトのキャラクタ・セットで書込みが行われます。
パラメータ・オプションを使用しない場合、FORMATASCII
は次のフォーマットでレコードを生成します。
行1は、次のタブ区切りリストを含みます。
操作タイプ・インジケータ: I
、D
、U
、V
(挿入、削除、更新、圧縮更新)
ビフォアまたはアフター・イメージ・インジケータ: B
またはA
オペレーティング・システムのキャラクタ・セットでの表名
列名、列値、列名、列値など
改行文字(新しい行を開始)
行2は、次のタブ区切り開始トランザクション・レコードを含みます。
開始トランザクション・インジケータ、B
トランザクションのコミット時のタイムスタンプ
コミットが検出されたトランザクション・ログの順序番号
トランザクション・ログ内のコミット・レコードの相対バイト・アドレス(RBA)
行3は、次のタブ区切りコメント・レコードを含みます。
コミット文字、C
改行文字
ソース・トランザクション内のすべてのレコードは、開始インジケータとコミット・インジケータの間に含まれます。コミット・タイムスタンプとRBAの各組合せは一意です。
カスタム出力
出力フォーマットは、オプションの引数でカスタマイズできます。
デフォルト
特定のデフォルト値は、デフォルト出力」を参照してください。
構文
FORMATASCII [, option] [, ...]
option
には、次のいずれかを指定できます。
BCP
SQL ServerのBCP、DTS、またはSQL Server Integration Services (SSIS)バルクロード・ユーティリティと互換性を持つように出力をフォーマットします。
DATE | TIME | TS
次のいずれかを出力します。
DATE
は日付を出力します(年から日)。
TIME
は時間を出力します(年から秒)。
TS
はトランザクションのタイムスタンプを出力します(年から秒の端数)。
CHARSET
set
(Oracle SQL*Loader) Oracle NCHAR
列のASCII文字のエンコーディングを指定します。有効な値はUTF8
です。
ソース表にNCHAR
データ、およびUTF-8に設定された可変長文字が含まれている場合、CHARSET
によって、ロードは文字長セマンテックを含めることができます。
注意:
NCHAR
列およびCHAR
列の両方に8ビットASCII文字が含まれている場合、生成されるファイルには、オペレーティング・システムのネイティブの8ビットASCII文字コーディングとUTF-8コーディングが混在して含まれているため、ロードは失敗します。
DELIMITER
delimiter
代替デリミタ文字。
次の値が有効です。
TAB
(タブで区切り)。これはデフォルトです。
一重引用符で囲んだ文字(例: '/'
)
EXTRACOLS
number
各レコードの末尾に追加列のためのプレースホルダを含めます。このオプションは、ターゲット表にソース表よりも多くの列が含まれる場合に使用してください。
NAMES | NONAMES
出力に列名を包含するか除外するかを指定します。変更された値しか存在しない更新では、PLACEHOLDERS
オプションも指定しないかぎり、列名は包含されます。
NOHDRFIELDS [IND], [OP]
次のように出力を抑止します。
NOQUOTE
文字データから引用符を除外します。NOQUOTE
を指定しない場合、文字は一重引用符で囲まれます。
NOTRANSTMTS
トランザクション情報を除外します。
NULLISSPACE
NULL列を空の列として出力します。NULLISSPACE
を指定しない場合、NULL列は単語NULL
として出力されます。
PLACEHOLDERS
紛失した列に対してプレースホルダを出力します。たとえば、4列の表で2番目および4番目の列が見つからない場合、次のように出力されます。
'ABC',,123,,
SQLLOADER
Oracle SQL*LoaderユーティリティまたはIBM Load Utilityプログラムと互換性を持つ固定長ASCIIフォーマット・ファイルを生成します。
例
次の例は、test.customer
という名前のソース表とサンプル・トランザクションに基づいています。この例では、様々なFORMATASCII
オプションがどのように出力を構成するかを示します。
表test.customer:
CUSTNAME CHAR(10) Primary key LOCATION CHAR(10) BALANCE INTEGER
トランザクション:
INSERT INTO CUSTOMER VALUES ('Eric', 'San Fran', 550); UPDATE CUSTOMER SET BALANCE = 100 WHERE CUSTNAME = 'Eric'; COMMIT;
オプションなしのFORMATASCII
では、次の出力が生成されます。
B,2011-01-21:14:09:46.421335,8,1873474, I,A,TEST.CUSTOMER,CUSTNAME,'Eric',LOCATION, 'San Fran',BALANCE,550, V,A,TEST.CUSTOMER,CUSTNAME,'Eric',BALANCE,100, C,
FORMATASCII, NONAMES, DELIMITER '|'
では、次の出力が生成されます。
B|2011-01-21:14:09:46.421335|8|1873474| I|A|CUSTOMER|'Eric'|'San Fran'|550| V|A|CUSTOMER|CUSTNAME|'Eric'|BALANCE|100| C|
最後のレコードはCUSTNAME
およびBALANCE
列の列名を返します。このレコードには更新された列の値だけが含まれ、PLACEHOLDERS
が使用されていないためです。
FORMATASCII, NOHDRFIELDS, OP, TS, NONAMES, NOQUOTE
では、次の出力が生成されます。
I,CUSTOMER,2011-01-21:14:09:46.421335,Eric,San Fran,550, V,CUSTOMER,2011-01-21:14:09:46.421335,Eric,,100,
2番目の列の不在の値は、2つの連続するカンマで示されています。