2017-09-06 5 views
0

は、まあ、私たちは、私は合計で3行を含むの.txt以下のファイルを持っているとしましょう:.txtファイルからOracle表に値を変換してロードする| unix |オラクル

cat my_file_to_load.txt 

993408 
Sep 01 12:46:46 2017 
Sep 01 12:46:51 2017 

ファイルの巨大なログファイルから特定のデータの抽出です。 最初の行はsuccess_rowsの数であり、2番目の行はstart_timeで、3番目の行はend_timeです。私の理想的な出力は、(我々は複数持っているテーブルに似ているだろうか

CREATE TABLE ABC.TEST_PP 
(
    SUCCESS_ROWS VARCHAR2(100 BYTE), 
    START_TIME VARCHAR2(100 BYTE), 
    END_TIME  VARCHAR2(100 BYTE) 
) 

: この場合、私の要件は、「形式」に以下のスクリプトで定義されたOracleテーブルにロードするために、それに応じたデータです。 TXTファイルなので、各行は以下のように描写されます):

SUCESS_ROWS START_TIME   END_TIME 
993408   01/09/2017 12:46:46 01/09/2017 12:46:51 

私に関する限り、私はそれらをロードするためにSQLLDRを使用します。 私はそれに応じて関連情報を定義するために.ctlファイルを作成する必要があることを理解します。

上記の表にロードするために.txtファイルのデータを変換する方法を教えてください。

すべてのヘルプは本当にいただければ幸い:)

を、お時間をありがとうございました良い一日持っています。

+0

あなたが(例えば、各行の末尾に文字を追加することができます。コンマ '、')? – etsa

+0

はいこれは実行可能です(許可されています) –

答えて

0

私はこの解決策を見つけました。すべての行の最後に固定文字を追加する必要があります(たとえば、コンマ '、')。 データファイルtest3.csvの名前を付けて、ctlファイルTEST3.CTLという名前を付けました。

コマンドライン:

sqlldr ERRORS=100000 userid=xxx/yyy control=TEST3.CTL data=test3.csv log=test3.log bad=test3.bad skip=0 

CTL

LOAD DATA 
CHARACTERSET WE8ISO8859P1 
APPEND 
CONCATENATE 3 
INTO TABLE TEST_PP 
FIELDS TERMINATED BY ',' 
TRAILING NULLCOLS 
( 
SUCCESS_ROWS , 
START_TIME , 
END_TIME 
) 

サンプルデータファイル:

993408, 
Sep 01 12:46:46 2017, 
Sep 01 12:46:51 2017, 
993412, 
Sep 02 10:22:46 2017, 
Sep 02 11:44:51 2017, 

出力テーブル:

993408 Sep 01 12:46:46 2017 Sep 01 12:46:51 2017 
993412 Sep 02 10:22:46 2017 Sep 02 11:44:51 2017 

ログファイル

Table TEST_PP, loaded from every logical record. 
Insert option in effect for this table: APPEND 
TRAILING NULLCOLS option in effect 

    Column Name     Position Len Term Encl Datatype 
------------------------------ ---------- ----- ---- ---- --------------------- 
SUCCESS_ROWS      FIRST  * ,  CHARACTER    
START_TIME       NEXT  * ,  CHARACTER    
END_TIME        NEXT  * ,  CHARACTER    


Table TEST_PP: 
    2 Rows successfully loaded. 
    0 Rows not loaded due to data errors. 
    0 Rows not loaded because all WHEN clauses were failed. 
    0 Rows not loaded because all fields were null. 


Space allocated for bind array:     49536 bytes(64 rows) 
Read buffer bytes: 1048576 

Total logical records skipped:   0 
Total logical records read:    2 
Total logical records rejected:   0 
Total logical records discarded:  0 

Run began on Wed Sep 06 12:17:55 2017 
Run ended on Wed Sep 06 12:17:55 2017 

Elapsed time was:  00:00:00.08 
CPU time was:   00:00:00.01 
+0

OK、etsa、有効なものです!うわー、ありがとう..しかし、各行の最後にコンマを置けないのであれば? それに応じて、日付のフォーマットを変換してテーブルにロードする必要はありませんか? –

関連する問題