SQLLDR

2012-02-22 14 views
1

私はこのような記録と例のデータファイルをロードしようとしている:SQLLDR

12312^123456^0015GRAJ1M7J0002^SOME GIBBERISH     ^123 

私は6つのデータベースの列、最初のレコードで、この5つのフィールドを関連付ける必要があります2に分かれています。

'12312' -> '123' and '12'

それ以外のフィールドには、「^」は分離されています。

私が今持っていることは次のとおりです。

COL_ONE POSITION(1:3) INTEGER EXTERNAL, 
    COL_TWO POSITION(4:5) CHAR TERMINATED BY "^", 
    COL_THREE INTEGER EXTERNAL TERMINATED BY "^", 
    COL_FOUR CHAR TERMINATED BY "^", 
    COL_FIVE CHAR TERMINATED BY "^", 
    COL_SIX CHAR TERMINATED BY "^" 
    .... 

が、予想通り、何らかの理由フィールドに

"SOME GIBBERISH     " 

が私を与えるCOL_SIX代わりのCOL_FIVE、中に挿入されてしまうので、これは動作しません。エラー。

マイログショー:

Column Name     Position Len Term Encl Datatype 
------------------------------ ---------- ----- ---- ---- --------------------- 
COL_ONE        1:3  3   CHARACTER    
COL_TWO        4:5  2 ^  CHARACTER    
COL_THREE       NEXT  * ^  CHARACTER    
COL_FOUR        NEXT  * ^  CHARACTER    
COL_FIVE        NEXT  * ^  CHARACTER    
COL_SIX        NEXT  * ^  CHARACTER 

任意のヘルプは高く評価されるだろう。

答えて

2

問題は、あなたの3番目のフィールドから来ている:

COL_THREE INTEGER EXTERNAL TERMINATED BY "^" 

このフィールドには、残念ながらそう、このフィールドは、間違った列に、次のすべてのフィールドを押して、NULL値で埋められます^が含まれている位置6で開始します。

あなたは6位の ^文字を無視する fillerを使用することができ

COL_ONE POSITION(1:3) INTEGER EXTERNAL, 
COL_TWO POSITION(4:5) CHAR, 
dummy FILLER POSITION(6:6), 
COL_THREE INTEGER EXTERNAL TERMINATED BY "^", 
COL_FOUR CHAR TERMINATED BY "^", 
COL_FIVE CHAR TERMINATED BY "^", 
COL_SIX CHAR TERMINATED BY "^" 
+0

どうもありがとうヴィンセント、私はちょうど来ていますこれを解決するために、私はあなたのソリューションを試してみました。 – Kris

+0

@Kris:あなたのソリューションはもっと理にかなっています=) –

3

試行錯誤で解決[OK]を、問題:

COL_ONE POSITION(1:3) INTEGER EXTERNAL, 
COL_TWO CHAR TERMINATED BY "^", 
..... 
関連する問題