DataBase/Oracle

[SQL Loader] sqlldr 행 구분자 변경 방법

윤팍 2021. 7. 21. 11:31

들어가며

sqlldr 를 쓰다보면 열 구분자(field terminator) 는 쉽게 변경할 수 있지만, 행 구분자(row terminator)는 변경하기 까다로워 찾는데 애를 먹은것 같다. 몇일을 헤매도 찾을 수 없었던 도중에 최근 새로운 정보를 보게 되어 해결할 수 있었다. 잊어먹지 않고 기억하기 위해 또 sqlldr 를 쓰다가 행 구분자를 변경해야할 경우가 생긴분들 한테 도움이 되길 바라며 변경 방법에 대해 알아보자

 

변경 방법

우선 기본적으로 sqlldr 의 행 구분자는 \n 값으로 되어있다. 이 값을 변경해주기 위해선, 행 구분자의 16진수 코드를 알아야한다. 예시에선 행 구분자를 '|' 로 지정해주었다.

SQL> select utl_raw.cast_to_raw('|') from dual;
> 7C

오라클에서 변경할 행 구분자의 16진수를 SQL문으로 받아와 sqlldr ctl 파일에서 해당 코드를 작성해준다.

load data
characterset UTF8
infile '/path/TEST.csv'    "str X'7C'"
append
into table TEST
fields terminated by ','
trailing nullcols(TEST1,TEST2)

sqlldr 명령어를 실행하면 알맞게 들어갈 수 있는걸 확인할 수 있다.

 

 

찾을땐 몰랐는데 해결하고 나서는 이렇게 간단한걸 왜케 오래 걸렸는지.. 다음에 쓰게 된다면 이 글이 도움이 됐으면 좋겠다.