SQL*Loader 사용하여 우편번호 테이블 생성하기
1. 액셀에서 *.xls, 혹은 *.dbf 파일을 불러온다
2. csv 파일 포맷으로 저장을 한다(csv는 각 컬럼의 데이터가 콤마로 구분되고 각행은 줄바꿈되어 텍스트로 표현하는 형식임)
3. csv 파일 생성 (zipcode.csv)
4. 우편번호 테이블 생성.
SQL>create table zipcode
(
zipcode varchar2(20),
sido varchar2(20),
gugun varchar2(20),
dong varchar2(60),
bunji varchar2(40),
seq number
);
5. zipcode.ctl 파일 생성 (텍스트 에디터 사용)
load data
infile zipcode.csv
replace
into table zipcode
fields terminated by ','
(
ZIPCODE char,
SIDO char nullif SIDO=blanks,
GUGUN char nullif GUGUN=blanks,
DONG char nullif DONG=blanks,
BUNJI char nullif BUNJI=blanks,
SEQ INTEGER EXTERNAL
)
6. 커맨드 프롬프트에서 sqlldr 명령 실행 (*.csv. *.ctl 파일이 존재 하는 폴더에서 작업)
7. SQL*Loader로 Data를 Load시킨 후에 확인
COUNT(*)
----------
49980
SQL>
.....................................................................................................................................................................................................
위와같은 절차를 거쳐 모든 데이터가 제대로 테이블에 저장되었는지 확인해 줄 필요가 있다.
SQLLDR 명령에서 지정한 *.BAD 파일을 열어보면 테이블에 저장할 수 없었던 레코드가 등록되어 있으므로 반드시 확인해야 한다.
참고로 위와 동일한 CSV 파일을 사용했다면 *.BAD 파일의 내용은 다음과 같이 파일의 맨 위쪽에 있었던 각 컬럼의 제목에 해당하는 문자열이 저장되어 있을 것이다.
생성된 zipcode.bad 파일의 내용
모든 레코드가 테이블에 저장되지 않은 경우
로드 과정중에서 작업이 중단되는 경우는 테이블의 컬럼 사이즈가 너무 작은 경우이므로 테이블의 컬럼 사이즈를 수정하고 다시 로드하면 된다.