신우편번호(5자리, 도로명주소) 를 오라클(Oracle) DB 에 넣기

1. 우체국 사이트에서 제공하는 신우편번호(도로명주소) 데이터를 다운로드 받습니다.
다운로드 : https://www.epost.go.kr/search/zipcode/areacdAddressDown.jsp

2. 각 시도별로 나누어져 있는 파일중에 우선 세종특별자치시.txt 파일을 Excel 로 파일을 오픈합니다. 아래의 화면이 나오면 다음을 선택합니다.

3. 구분기호에 기타 항목을 체크하고 “|” 를 넣고 데이터 미리보기에 잘 보이는지 확인합니다. 그리고 다음을 누릅니다.

4. 데이터 미리보기에서 우편번호 위의 일반부터 끝까지 선택하여 데이터 서식을 모두 텍스트로 변경하고 마침을 누릅니다.

5. 그럼 엑셀에서 대략 아래와 같이 확인하실 수 있습니다.

6. Excel 메뉴중 파일 – 다른 이름으로 저장 – 파일 형식을 CSV UTF-8(쉼표로 분리)(*.csv) 로 선택하여 저장합니다.

7. 저장된 csv 파일을 Oracle DB 서버에 업로드 합니다.

8. Oracle DB 에 아래의 SQL 문을 사용하여 우편번호데이터를 넣을 NEWPOST 테이블을 생성합니다.

create table NEWPOST
(
	NEW_POST_CODE	NUMBER(30),
	SIDO_KOR		VARCHAR2(200),
	SIDO_ENG		VARCHAR2(30),
	SIGUNGU_KOR		VARCHAR2(30),
	SIGUNGU_ENG		VARCHAR2(30),
	UPMYON_KOR		VARCHAR2(30),
	UPMYON_ENG		VARCHAR2(200),
	DORO_NUMBER		NUMBER(30),
	DORO_KOR		VARCHAR2(100),
	DORO_ENG		VARCHAR2(200),
	UNDOR_FLAG		NUMBER(30),
	BUILDING_ORIGIN_NUMBER	NUMBER(30),
	BUILDING_REFER_NUMBER	NUMBER(30),
	BUILDING_MANAGE_NUMBER	NUMBER(30),
	MULTI_DELIVER_NAME		VARCHAR2(30),
	SIGUNGU_BUILDING_NAME	VARCHAR2(200),
	LAW_DONG_NUMBER	NUMBER(30),
	LAW_DONG_NAME	VARCHAR2(38),
	RI_NAME			VARCHAR2(30),
	ADMIN_DONG_NAME	VARCHAR2(38),
	SAN_FLAG		NUMBER(30),
	JIBEON_BONBEON	NUMBER(30),
	UPMYONDONG_SEQ	NUMBER(30),
	JIBEON_BUBEON	NUMBER(30),
	OLD_POST_CODE	VARCHAR2(30),
	POST_CODE_SEQ	VARCHAR2(30)
)

9. 서버에서 db.ctl 파일로 아래와 같은 내용으로 만들어서 데이터를 넣을 준비를 한다. infile 라인에서 csv 파일 경로를 지정해주면 됩니다.

load data
infile './세종특별자치시.csv'
append
into table NEWPOST
fields terminated by ',' OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(NEW_POST_CODE, SIDO_KOR, SIDO_ENG, SIGUNGU_KOR, SIGUNGU_ENG, UPMYON_KOR, UPMYON_ENG, DORO_NUMBER, DORO_KOR, DORO_ENG, UNDOR_FLAG, BUILDING_ORIGIN_NUMBER, BUILDING_REFER_NUMBER, BUILDING_MANAGE_NUMBER, MULTI_DELIVER_NAME, SIGUNGU_BUILDING_NAME, LAW_DONG_NUMBER, LAW_DONG_NAME, RI_NAME, ADMIN_DONG_NAME, SAN_FLAG, JIBEON_BONBEON, UPMYONDONG_SEQ, JIBEON_BUBEON, OLD_POST_CODE, POST_CODE_SEQ)

10. sqlldr 을 실행하여 우편번호 데이터를 Oracle DB 서버에 insert 합니다.

root@orainstall:/# sqlldr DB유저명/패스워드 control=db.ctl
Commit point reached - logical record count 25433
Commit point reached - logical record count 25471
Commit point reached - logical record count 25509
Commit point reached - logical record count 25547
Commit point reached - logical record count 25585
Commit point reached - logical record count 25623
Commit point reached - logical record count 25661
Commit point reached - logical record count 25699
Commit point reached - logical record count 25737
Commit point reached - logical record count 25775
Commit point reached - logical record count 25813
Commit point reached - logical record count 25851
Commit point reached - logical record count 25889
Commit point reached - logical record count 25927
Commit point reached - logical record count 25965
Commit point reached - logical record count 26003
Commit point reached - logical record count 26012
root@orainstall:/# 

11. 세종특별자치시.bad 내용을 확인하고 sql 문을 사용하거나 sqldeveloper 등을 사용하여 데이터가 제대로 입력이 되었는지 확인합니다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다