Today I Learned …
[웹개발] 주소 검색 기능 (1) : 주소 DB 자체 구축 (MySql) 본문
* 개인적인 공부 내용을 기록한 글입니다.
사담
드디어 주소 DB!
이제 개발은 진짜 끝이다.
설명
주소 검색 기능을 구현하는 과정은 크게 둘로 나눌 수 있다.
[1] 주소 DB 구축
[2] 회원가입 시 주소 검색 로직 구현
이번 포스팅에서는 API를 사용하지 않고 주소 DB를 구축하는 방법에 대해 다룬다.
주소 DB 구축 (MySql)
1. 우정사업본부 홈페이지 (= koreapost.go.kr) 에서 주소 DB를 다운받는다.
[1] 메인화면 > 정보공개 > 우정데이터 제공센터
[2] 우편데이터 제공 목록 > 우편번호DB
[3] 우편번호 DB란? > 우편번호 DB파일 바로가기
[4] 고시파일 내려받기 > 지역별 주소 DB > 받기
2. 다운받은 zipcode_DB의 압축을 풀고 각 파일의 이름을 숫자로 바꿔준다.
3. 다음의 MySql 환경 설정을 거쳐준다.
mysql> show global variables like 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | OFF |
+---------------+-------+
1 row in set (0.00 sec)
[1] local_infile : 현재 설정 확인
mysql> set global local_infile=true;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | ON |
+---------------+-------+
1 row in set (0.00 sec)
[2] local_infile : ON으로 변경
mysql> exit
Bye
[3] MySql 종료
mysql --local_infile -u root -p
[4] local_infile : 옵션 껴서 MySql 재실행
4. 주소 데이터가 들어갈 테이블을 만들어준다.
CREATE TABLE IF NOT EXISTS `ZIPCODE` (
`ZIP_NO` VARCHAR(5) NULL COMMENT '우편번호',
`SIDO` VARCHAR(20) NULL COMMENT '시도',
`SIDO_ENG` VARCHAR(40) NULL COMMENT '시도(영문)',
`SIGUNGU` VARCHAR(20) NULL COMMENT '시군구',
`SIGUNGU_ENG` VARCHAR(40) NULL COMMENT '시군구(영문)',
`EUPMYUN` VARCHAR(20) NULL COMMENT '읍면',
`EUPMYUN_ENG` VARCHAR(40) NULL COMMENT '읍면(영문)',
`DORO_CD` VARCHAR(12) NULL COMMENT '도로명코드',
`DORO` VARCHAR(80) NULL COMMENT '도로명',
`DORO_ENG` VARCHAR(80) NULL COMMENT '도로명(영문)',
`UNDERGROUND_YN` CHAR(1) NULL COMMENT '지하여부',
`BUILD_NO1` DECIMAL(5,0) NULL COMMENT '건물번호본번',
`BUILD_NO2` DECIMAL(5,0) NULL COMMENT '건물번호부번',
`BUILD_NO_MANAGE_NO` VARCHAR(25) NULL COMMENT '건물관리번호',
`DARYANG_NM` VARCHAR(40) NULL COMMENT '다량배달처명',
`BUILD_NM` VARCHAR(200) NULL COMMENT '시군구용건물명',
`DONG_CD` VARCHAR(10) NULL COMMENT '법정동코드',
`DONG_NM` VARCHAR(20) NULL COMMENT '법정동명',
`RI` VARCHAR(20) NULL COMMENT '리명',
`H_DONG_NM` VARCHAR(40) NULL COMMENT '행정동명',
`SAN_YN` VARCHAR(1) NULL COMMENT '산여부',
`ZIBUN1` DECIMAL(4,0) NULL COMMENT '지번본번',
`EUPMYUN_DONG_SN` VARCHAR(2) NULL COMMENT '읍면동일련번호',
`ZIBUN2` DECIMAL(4,0) NULL COMMENT '지번부번' ,
`ZIP_NO_OLD` VARCHAR(4) NULL COMMENT '구우편번호' ,
`ZIP_SN` VARCHAR(2) NULL COMMENT '우편일련번호'
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;
5. zipcode_DB 디렉토리 내 모든 파일을 하나씩 테이블에 넣어준다.
mysql> LOAD DATA LOCAL INFILE "/home/choco/zipcode_DB/1.txt" INTO TABLE ZIPCODE CHARACTER SET 'utf8' FIELDS TERMINATED BY '|' IGNORE 1 LINES;
Query OK, 357571 rows affected, 2 warnings (4.70 sec)
Records: 357571 Deleted: 0 Skipped: 0 Warnings: 2
[1] "/home/choco/zipcode_DB/1.txt" 부분에 넣고자 하는 파일의 경로를 적어준다.
[2] 1.txt ~ 17.txt 까지 위 코드를 반복 실행하여 전부 넣어주면 된다.
6. 모든 작업이 완료된 DB의 모습은 다음과 같다.
[1] 주소 DB 구축 끝!
참고 포스팅
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=mariapang&logNo=221512818793
'Web > APM' 카테고리의 다른 글
[웹개발] 한글 종성 유무의 검증 (0) | 2021.12.20 |
---|---|
[웹개발] 주소 검색 기능 (끝) : 주소 검색 로직 구현 (0) | 2021.11.16 |
[웹개발] 게시글 검색 기능 (기간 설정 포함) (0) | 2021.11.15 |
[웹개발] 비회원 문의글 작성, 조회 및 삭제 기능 (0) | 2021.11.14 |
[웹개발] 마이페이지 비밀번호 변경 기능 (0) | 2021.11.13 |