sqllr 질문 0 3 1,501

by 능글맞은 너구리 [Oracle 기초] sqlldr float [2018.04.16 12:12:09]


sqlldr로 대량의 데이타를 업로드 하는 중 오류가 있어서 해결 방법 문의 드립니다.

 

* Data파일 일부

82685313    00000001    19100    20171001    86.12
84775729    00000001    19100    20171001    50.005
85096037    00000001    19100    20171001    100
84822029    00000001    19100    20171001    50
85231078    00000001    19100    20171001    62.5
84903710    00000001    19100    20171001    50
84884966    00000001    19100    20171001    100

* 테이블 스키마

COL1    NUMBER
COL2    CHAR(8 BYTE)
COL3    CHAR(5 BYTE)
COL4    VARCHAR2(8 BYTE)
COL5    NUMBER(5, 2)

 

* CONTROL FILE

OPTIONS (STREAMSIZE=600000, DIRECT=FALSE, PARALLEL=TRUE, MULTITHREADING=TRUE)

LOAD DATA
INFILE '/home/sqlldr/data.txt'
BADFILE '/home/sqlldr/result.bad'
DISCARDFILE '/home/sqlldr/result.dsc'

INTO TABLE "TABLE_NAME
APPEND
FIELDS TERMINATED BY '    '
(
    COL1 "TRIM(:COL1)",
    COL2 CHAR "DECODE(LENGTH(TRIM(:COL2)), 8, TRIM(:RATE_TYPE), NULL)",
    COL3 CHAR "DECODE(LENGTH(TRIM(:COL3)), 5, TRIM(:COMP_ID), NULL)",
    COL4 CHAR "DECODE(LENGTH(TRIM(:COL4)), 8, TRIM(:START_DT), NULL)",
    COL5  "TO_NUMBER(TRIM(:COL5))"
)

COL5에 대해서 NUMBER(5,2)만 입력하고 싶습니다.

COL5에 대해서 어떻게 해도 "ORA-01722: invalid number"에러가 나서,

CONTROL FILE에서 어떻게 설정해서 load해야 할 지 모르겠습니다. 

조언 부탁 드리겠습니다.

 

by 마농 [2018.04.16 13:19:05]

에러가 난 레코드는 입력이 되지 않고 bad 파일로 떨어질 텐데요?


by 능글맞은 너구리 [2018.04.16 13:55:05]

모두 bad로 떨어지다가... 동일 오류가 50번 나면, 중지 되는거 같습니다.

어떤 데이타를 올리던지... 같은 형식이면, 50번 에러 후 중지 되었습니다.


by 마농 [2018.04.16 13:56:58]

sqlldr 실행시 errors=50 기본값입니다. errors 값 늘리고 실행하세요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입