2017-09-04 9 views
0

SQLローダーを使用してデータをロードしようとしていますが、エラーが発生しています。ロードするSQLローダーエラー - データエラーのためローがロードされない

表 -

CREATE TABLE TEST_PIPE_SEP (FILE_NAME VARCHAR2(3000), KEY_COL VARCHAR2(4000), DESCR VARCHAR2(100), RUN_DATE DATE); 

私は現在の処理ファイルを取得し、FILE_NAME列のデフォルト値として渡すことができるように、私はシェルとSEDのコマンドを使用して動的CTLファイルを作成しています。後に作成されます新しいファイル

LOAD DATA   
CHARACTERSET WE8ISO8859P1   
APPEND   
INTO TABLE TEST_PIPE_SEP   
FIELDS TERMINATED BY ','   
(  
#file_name#  
key_col "trim(:key_col)", 
descr "trim(:descr)", 
run_date "SYSDATE" 
) 

- test.ctlの形式は、私は現在の処理ファイル名を渡すためにSEDを使用して実行時間を上の編集をしていた下記の通りである

#!/bin/ksh 

echo "starting script" 
#cd data 

for i in data/Key_Mismatch_Output_UAT*.csv 
do 

    #echo "$i" 

    filename=`basename "${i}"` 
    echo "$filename" 

    #sed '1d' "$i" >> test.csv 
    sed -e "s/#file_name#/file_name \"${filename}\",/g" test.ctl > new_test_3.ctl 

sqlldr ERRORS=100000 userid=$USER_CRED control=new_test_3.ctl data=data/$filename silent=all log=data/$filename".log" bad=data/$filename.bad skip=1 

wait 
done 
echo "ending script" 

CSVファイル

LOAD DATA 
CHARACTERSET WE8ISO8859P1 
APPEND 
INTO TABLE TEST_PIPE_SEP 
FIELDS TERMINATED BY ',' 
( 
file_name "Key_Mismatch_Output_UAT.csv.20170804070448.1_LIVE.csv.20170804070448.2_20170804070448.csv", 
key_col "trim(:key_col)", 
descr "trim(:descr)", 
run_date "SYSDATE" 
) 

、その含まれています - - SED称賛は以下の通りである

Key Columns,Description 

"C"|"G000053929"|"ABCD"|"G000053929"|""|""|"TTA"|""|""|""|""|""|"DRR"|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|"",Not Present in file1 
"C"|"G000053621"|"HGHQ"|"G000053621"|""|""|"CBI"|""|""|""|""|""|"DRR"|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|"",Not Present in file2 
"C"|"G000053929"|"HGHQ"|"G000053929"|""|""|"TTA"|""|""|""|""|""|"DRR"|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|"",Not Present in file2 

と、私はエラーの下に取得し、ルート原因を見つけることができないのですがより多くの情報が必要な場合は私に聞いてくださいCTLはデータ

Table TEST_PIPE_SEP, loaded from every logical record. 
Insert option in effect for this table: APPEND 
  
    Column Name     Position Len Term Encl Datatype   
------------------------------ ---------- ----- ---- ---- --------------------- 
FILE_NAME       FIRST  * ,  CHARACTER    
    SQL string for column : "TRIM('Key_20170804070448.csv')" 
KEY_COL        NEXT  * ,  CHARACTER    
DESCR        NEXT  * ,  CHARACTER    
RUN_DATE        NEXT  * ,  CHARACTER    
    SQL string for column : "SYSDATE" 
  

Table TEST_PIPE_SEP: 

    0 Rows successfully loaded. 
    1 Row 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. 

をロードすることができる限りではなく、ファイル変更しようとしました。

私は

Oracle Database 11gのEnterprise Editionのリリース11.2.0.4.0を使用しています - 64ビットの生産

答えて

1

を限り、私はあなたが単語CONSTANTを使用する必要がありますSQLLDRと一定の値をロードするために知っています。だからあなたの場合には、あなたが

... 
FIELDS TERMINATED BY ',' 
(file_name CONSTANT "Key_Mismatch_Output_UAT.csv.20170804070448.1_LIVE.csv.20170804070448.2_20170804070448.csv", 
... 

... 
FIELDS TERMINATED BY ',' 
(file_name "Key_Mismatch_Output_UAT.csv.20170804070448.1_LIVE.csv.20170804070448.2_20170804070448.csv", 
... 

に置き換えてくださいPlsはその間に私は必要に応じて、より多くのテストを行うには、あなたのテーブルやスクリプトを再現しよう(私はそれがあなたのために働く知っています)

補遺

私はあなたのデータを使用してテストを行いました。上記のようにCONSTANTキーワードを使用する必要があることを確認します。

また、run_dateをSYSDATEでロードする場合は、TRAILING NULLCOLSオプションを追加する必要があります。ですから、

... 
INTO TABLE TEST_PIPE_SEP 
FIELDS TERMINATED BY ',' 
TRAILING NULLCOLS 
( 
... 

... 
INTO TABLE TEST_PIPE_SEP 
FIELDS TERMINATED BY ',' 
( 
... 

を変更する必要がありますCTLは、私のテストを行うために使用:

LOAD DATA 
CHARACTERSET WE8ISO8859P1 
APPEND 
INTO TABLE TEST_PIPE_SEP 
FIELDS TERMINATED BY ',' 
TRAILING NULLCOLS 
( 
file_name CONSTANT "Key_Mismatch_Output_UAT.csv.20170804070448.1_LIVE.csv.20170804070448.2_20170804070448.csv", 
key_col "trim(:key_col)", 
descr "trim(:descr)", 
run_date "SYSDATE" 
) 

ログファイルのSQLLDRを:私は別のものを追加したので、(私は4行をロードファイルの行をサンプルします(単純にA、B)。

SQL*Loader: Release 11.2.0.2.0 - Production on Mon Sep 4 15:01:12 2017 
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. 
Control File: TEST2.CTL 
Character Set WE8ISO8859P1 specified for all input. 
Data File:  test2.csv 
    Bad File:  test2.bad 
    Discard File: none specified 
(Allow all discards) 
Number to load: ALL 
Number to skip: 1 
Errors allowed: 100000 
Bind array:  64 rows, maximum of 256000 bytes 
Continuation: none specified 
Path used:  Conventional 
Table TEST_PIPE_SEP, 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 
------------------------------ ---------- ----- ---- ---- --------------------- 
FILE_NAME             CONSTANT 
    Value is 'Key_Mismatch_Output_UAT.csv.20170804070448.1_LIVE.csv.20170804070448.2_20170804070448.csv' 
KEY_COL        FIRST  * ,  CHARACTER    
    SQL string for column : "trim(:key_col)" 
DESCR        NEXT  * ,  CHARACTER    
    SQL string for column : "trim(:descr)" 
RUN_DATE        NEXT  * ,  CHARACTER    
    SQL string for column : "SYSDATE" 

Table TEST_PIPE_SEP: 
    4 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:     55296 bytes(64 rows) 
Read buffer bytes: 1048576 

Total logical records skipped:   1 
Total logical records read:    4 
Total logical records rejected:   0 
Total logical records discarded:  0 

Run began on Mon Sep 04 15:01:12 2017 
Run ended on Mon Sep 04 15:01:12 2017 

Elapsed time was:  00:00:00.09 
CPU time was:   00:00:00.00 

サンプルデータ:返信etsaため

Key Columns,Description 
A,B 
"C"|"G000053929"|"ABCD"|"G000053929"|""|""|"TTA"|""|""|""|""|""|"DRR"|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|"",Not Present in file1 
"C"|"G000053621"|"HGHQ"|"G000053621"|""|""|"CBI"|""|""|""|""|""|"DRR"|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|"",Not Present in file2 
"C"|"G000053929"|"HGHQ"|"G000053929"|""|""|"TTA"|""|""|""|""|""|"DRR"|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|"",Not Present in file2 
+0

感謝。 CONSTANTキーワードを使ってみましたが、同じエラーが出ます。 シナリオを正常に実行しましたか?使用しているCTLファイルの例を教えてください。はい、私はCTL構造を修正して、NULLCOLSを追加します。 – mradul

+0

@mradulはい私はうまくいった。 – etsa

+0

@mradulにログctlとサンプルデータ(あなたの行と別の行)を追加しました – etsa

関連する問題