Completion over Perfection

SQL*Loader (sqlldr) 유틸 사용시 주의점 본문

카테고리 없음

SQL*Loader (sqlldr) 유틸 사용시 주의점

난차차 2022. 6. 30. 13:03
반응형

얼마전에 Tibero에서 Oracle로 DB를 마이그레이션하면서 여러가지 문제에 봉착을 하게 되었는데, 

그 중에 하나가 sqlldr 유틸리티였다. 

 

내가 현재 운영하는 서비스는 매일 업데이트되는 csv파일을 AWS S3 버킷으로부터 받아오고, 

그 파일로부터 데이터를 추출해서 sqlldr를 통해 Oracle DB에 넣어주는 형태로 되어있다.

 

문제는 sqlldr를 통해서 DB에 데이터를 밀어넣어줄 때 발생했다. 

 

Tibero DB를 사용할 때는 tbloader라는 sqlldr와 비슷한 유틸리티를 써서 csv 파일로부터 데이터를 받아온다음 

DB에 바로 넣어주었었는데, 이 때 만약 에러가 발생하더라도 .bad 파일만 생성해주고 나머지 데이터들은 

그대로 다 밀어넣어줘서 별 문제가 없었다. 

 

근데 sqlldr는 errors라는 값이 default로 50으로 설정이 되어있었고, 

csv파일에서 컬럼에 맞지 않는 데이터가 들어가 있을 경우에는 에러를 발생시키고

만약 그 에러의 갯수가 50개가 넘어가면 더이상 DB에 데이터를 밀어넣지 않고 멈춰버리는 것이었다. 

 

그래서 아래와 같이 설정해서 에러가 50개 이상 발생하더라도 나머지 데이터는 모두 밀어넣을 수 있도록 설정을 해줬다.

 

sqlldr userid/password@ipaddress:port/SID control=ctl파일위치 errors=999999

 

 

이것때문에 거의 3~4시간을 DB 데이터 전수검사한다고 시간 날렸다. ㅠ.ㅠ 

여러분은 저처럼 고생하지 말고 sqlldr 사용시에는 반드시 에러 설정을 맥스치로 설정해두세요. 

 

※ 참고로 errors 값으로 설정할 수 있는 맥스치는 2147483647 이라고 합니다.
    -1로 넣으라는 사람들도 있던데, 저는 에러나더라고요.  

 

반응형
Comments