2

以下の定義の外部テーブルがあります。

create table app_doctor (
      doc_no             number(9),
      age                number(3),
      eor                char(3 char)
) 
organization external 
(     type oracle_loader
      default directory "DOC"
      access parameters
      ( 
        records delimited by newline
        **load when (eor = "EOR")**
        string sizes are in characters
        logfile 'doc.log'
        badfile 'doc.bad'
        discardfile 'doc.dsc'
        fields 
        ( 
          doc_no position     (1:9) integer external(9),
          age position        (10:12) integer external(3),
          eor position        (13:15) char(3)
        )
      )
      location('HOSP_DOC.txt')
)
reject limit unlimited
parallel 5;

100個のレコードをフィードし、そのうち50個が有効、20個が無効、30個がWHEN条件を満たしていませんが、破棄ファイルに4個または5個のレコードしか表示されません。

4

3 に答える 3

0

次の外部テーブル定義を使用します。

create table app_doctor (
      doc_no             number(9),
      age                number(3),
      eor                char(3 char)
) 
organization external 
(     type oracle_loader
      default directory "DOC"
      access parameters
      ( 
        records delimited by newline
        **load when (eor = "EOR")**
        string sizes are in characters
        logfile 'doc.log'
        badfile 'doc.bad'
        discardfile 'doc.dsc'
        fields 
        ( 
          doc_no position     (1:9) integer external(9),
          age position        (10:12) integer external(3),
          eor position        (13:15) char(3)
        )
      )
      location('HOSP_DOC.txt')
)
reject limit unlimited
parallel 5;

そして、次のテスト データ ファイル:

123456789021EOR
123456789021EOR
123456789021EOR
123456789021EOR
123456789021FER
123456789021FER
123456789021FER
asdfasfa9021ABC
asdfasfa9021ABC
asdfasfa9021ABCasdfasdas
123456789021ABC
123456789021FER
123456789021EOR
123456789021EOR
123456789021EOR
123456789021ABC
123456789021ABC
123456789021ABC

実行時に7つの有効なレコードが返されます

select * from app_doctor;

私の廃棄ファイルには 11 個の不良レコードがすべて含まれており、ログ ファイルdoc.logには実行中に何が起こったかについての正しい情報が含まれています。

  03/08/13 11:33:56 に開かれた LOG ファイル

テーブル APP_DOCTOR のフィールド定義
  レコード形式 DELIMITED BY NEWLINE
  ファイル内のデータのエンディアンはプラットフォームと同じです
  すべてのフィールドが null の行が受け入れられます
  いつロードするか (EOR = EOR)

  データ ソースのフィールド:

    DOC_NO 整数外部 (9)
      レコード位置 (1、9)
      SQLローダーと同じように空白を削除
    AGE 整数外部 (3)
      レコード位置 (10、12)
      SQLローダーと同じように空白を削除
    EOR CHAR (3)
      記録位置 (13, 15)
      SQLローダーと同じように空白を削除


 03/08/13 11:33:56 に開かれた LOG ファイル

テーブル APP_DOCTOR のフィールド定義
  レコード形式 DELIMITED BY NEWLINE
  ファイル内のデータのエンディアンはプラットフォームと同じです
  すべてのフィールドが null の行が受け入れられます
  いつロードするか (EOR = EOR)

  データ ソースのフィールド:

    DOC_NO 整数外部 (9)
      レコード位置 (1、9)
      SQLローダーと同じように空白を削除
    AGE 整数外部 (3)
      レコード位置 (10、12)
      SQLローダーと同じように空白を削除
    EOR CHAR (3)
      記録位置 (13, 15)
      SQLローダーと同じように空白を削除
KUP-04102: ファイル /apps/oracle/doc/HOSP_DOC.txt からレコード 5 が破棄されました
KUP-04102: ファイル /apps/oracle/doc/HOSP_DOC.txt からレコード 6 が破棄されました
KUP-04102: ファイル /apps/oracle/doc/HOSP_DOC.txt からレコード 7 が破棄されました
KUP-04102: ファイル /apps/oracle/doc/HOSP_DOC.txt からレコード 8 が破棄されました
KUP-04102: ファイル /apps/oracle/doc/HOSP_DOC.txt からレコード 9 が破棄されました
KUP-04102: ファイル /apps/oracle/doc/HOSP_DOC.txt からレコード 10 が破棄されました
KUP-04102: ファイル /apps/oracle/doc/HOSP_DOC.txt からレコード 11 が破棄されました
KUP-04102: ファイル /apps/oracle/doc/HOSP_DOC.txt からレコード 12 が破棄されました
KUP-04102: ファイル /apps/oracle/doc/HOSP_DOC.txt からレコード 16 が破棄されました
KUP-04102: ファイル /apps/oracle/doc/HOSP_DOC.txt からレコード 17 が破棄されました
KUP-04102: ファイル /apps/oracle/doc/HOSP_DOC.txt からレコード 18 が破棄されました
于 2013-03-08T17:35:31.043 に答える