我々はデータを知らないが、今、我々は最後の行に
をスキップするようにあなたのデータについて何も知らない場合はシナリオを見てみましょう(例えばそれはdoesnのあなたが探すことができるトレーラーのビルド番号フィールドには魔法の番号があります;とにかく番号ではないので、とにかく拒否されません;など)はthe PREPROCESSOR
clauseで、最後にあなたのためにファイルのラインアウト。例えば
、私はa simple executable shell scriptが(同じディレクトリに、それができる - とすべきである - どこか別のこと)remove_last_line
と呼ばれる作成した場合だけsed
コマンドの呼び出し(またはGNU /usr/bin/head --lines=-1 $1
コマンドは、Linux上であまりにも動作します)を含む:
#!/bin/bash
/bin/sed '$d' $1
その後、私はそれがロードされる前に、ファイルがその通過させることがしたいことをオラクルに伝えることができます:
CREATE TABLE buildinfo_ext (
"BUILD NO" NUMBER,
"DATE" DATE
)
ORGANIZATION EXTERNAL (
TYPE ORACLE_LOADER
DEFAULT DIRECTORY ext_tab_data
ACCESS PARAMETERS (
RECORDS DELIMITED BY NEWLINE
SKIP 1
PREPROCESSOR 'remove_last_line'
FIELDS TERMINATED BY ','
MISSING FIELD VALUES ARE NULL
(
"BUILD NO",
"DATE" CHAR(10) DATE_FORMAT DATE MASK "YYYY-MM-DD"
)
)
LOCATION ('Info.csv')
)
--PARALLEL 5
REJECT LIMIT UNLIMITED;
それが衝突するように私はPARRALEL
オプションを無効にしましたSKIP
であるが、プリプロセッサにヘッダを削除することもできます。私は他のビットも少し微調整しました。私はテーブルを照会するとき
Build number,Date
1,2016-07-01
2,2016-07-02
2 records
は、私が唯一のファイルから2つの有効な行を参照してください:次に
私はInfo.csv
を含む作成しませ.bad
ファイルが生成されません
select * from buildinfo_ext;
BUILD NO DATE
---------- ---------
1 01-JUL-16
2 02-JUL-16
、および.log
ファイルに問題は報告されません。
LOG file opened at 08/09/16 15:56:14
KUP-05004: Warning: Intra source concurrency disabled because parallel select was not requested.
KUP-05007: Warning: Intra source concurrency disabled because the preprocessor option is being used.
Field Definitions for table BUILDINFO_EXT
Record format DELIMITED BY NEWLINE
Data in file has same endianness as the platform
Rows with all null fields are accepted
Fields in Data Source:
BUILD NO CHAR (255)
Terminated by ","
Trim whitespace same as SQL Loader
DATE CHAR (10)
Date datatype DATE, date mask YYYY-MM-DD
Terminated by ","
Trim whitespace same as SQL Loader
Date Cache Statistics for table BUILDINFO_EXT
Max Size: 1000
Entries : 2
Hits : 0
Misses : 0
Windows上のディレクトリパスから、プリプロセッサバッチスクリプトと同様のことができます。他のオペレーティングシステムでも、同じ効果を達成するために異なるスクリプトが必要な場合があります。
予告編の記録はどのようなものですか?サンプルのCSVファイルを表示すると便利です。 –
データがわからないようなシナリオを見てみましょうが、データがどのように表示されても最後の行はスキップします。しかし、我々はそれがいくつかの区切り文字を持つcsvファイルであることだけを知っています。 – anishroniyar