説明
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には、次のいずれかを指定できます。
BCPSQL 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]次のように出力を抑止します。
NOHDRFIELDSオプションなしでは、データ値を除くすべてを抑止します。
INDビフォアまたはアフター・インジケータ(BまたはA)およびデータ値を除くすべてを抑止します。
OP操作タイプ・インジケータ(I、D、U、V)およびデータ値を除くすべてを抑止します。
NOQUOTE文字データから引用符を除外します。NOQUOTEを指定しない場合、文字は一重引用符で囲まれます。
NOTRANSTMTSトランザクション情報を除外します。
NULLISSPACENULL列を空の列として出力します。NULLISSPACEを指定しない場合、NULL列は単語NULLとして出力されます。
PLACEHOLDERS紛失した列に対してプレースホルダを出力します。たとえば、4列の表で2番目および4番目の列が見つからない場合、次のように出力されます。
'ABC',,123,,
SQLLOADEROracle 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つの連続するカンマで示されています。