プライマリ・コンテンツに移動
Oracle® GoldenGate Oracle GoldenGateリファレンスfor Windows and UNIX
12c (12.1.2)
E49845-08
  目次へ移動
目次

前
 
次
 

FORMATASCII

適用対象

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は、次のタブ区切りリストを含みます。

  • 操作タイプ・インジケータ: IDUV (挿入、削除、更新、圧縮更新)

  • ビフォアまたはアフター・イメージ・インジケータ: 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]

次のように出力を抑止します。

NOHDRFIELDS

オプションなしでは、データ値を除くすべてを抑止します。

IND

ビフォアまたはアフター・インジケータ(BまたはA)およびデータ値を除くすべてを抑止します。

OP

操作タイプ・インジケータ(IDUV)およびデータ値を除くすべてを抑止します。

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;
例1   

オプションなしの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,
例2   

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が使用されていないためです。

例3   

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つの連続するカンマで示されています。