Web Hacking Study/Web Page 만들기

주소 검색 기능 (DB 세팅) - 1

silver surfer 2022. 4. 18.

도로명 주소 개발자 센터의 주소 DB를 다운로드하려고 했지만 사용하지 않는 정보의 양이 너무 많아서 다른 방법을 사용하기로..


Step 1. 우정사업본부에서 주소 DB를 다운로드 한다
https://www.epost.go.kr/search/zipcode/cmzcd002k01.jsp

 

우편번호 DB와 검색기 소개 - 우편번호 안내

우편번호 DB란? 자체 전산시스템을 보유하고 있는 기업체 등에서 활용이 가능한 데이터 파일입니다. 도로명주소, 지번주소, 5자리 우편번호(구역번호) 등으로 구성되어 있으며, 텍스트(txt) 파일

www.epost.go.kr


Step 2. 우편번호 DB파일 바로가기 클릭하고 지역별 주소 DB를 내려받는다


Step 3. Window에서 압축 풀고 가상머신(Ubuntu)에 붙여넣기 - 참고링크

Step 4. 다운로드한 파일명을 전부 숫자로 바꾸고(대용량 데이터 Insert 할 때 편함), 주소DB용 폴더에 옮기기


Step 5. 대용량 데이터를 입력하기 위한 LOAD DATA INFILE 명령어를 사용하기 전, Mysql 환경설정을 한다
load data infile 구문은 특정 경로에 있는 파일만 읽는다.
특정 경로와 상관 없이 파일을 읽어들이려면 load data local infile을 사용한다.

load data local infile [파일 위치]
into table [테이블 이름]


이 명령어를 사용하기위해, mysql 환경 설정한다

$ mysql -u root -p
mysql > show global variables like 'local_infile';


local_infile이 설정값이 OFF로 되어있으므로 설정값을 ON으로 바꿔준다.

mysql > set global local_infile = 1;


ON으로 변경되었는지 확인

mysql > show global variables like 'local_infile';

변경 되었다.

mysql 나가기


Step 7. phpmyadmin에서 우편번호 테이블을 생성

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='utf8mb4_0900_ai_ci'
;

phpmyadmin → 컬럼이 만들어졌다

이제 여기다 데이터를 넣어야한다

Step 8. 주소가 보관된 폴더를 /home/boeun 위치에 이동


Step 9. mysql에서 데이터를 입력하기 위해 아래 명령어로 DB(logindb)에 접속한다

$ mysql --local-infile –u[mysql 계정 이름] -p[mysql 비밀번호] [DB 이름]

주소 데이터를 넣을 테이블 이름은 ZIPCODE이고, ZIPCODE 는 logindb라는 데이터베이스 안에 있다
(윗윗 사진 phpmyadmin 참고)

 

내가 DB에 접속하기 위해 사용한 명령어는 이런 형식이지만 다양한 방법이 많으니(구글링) 상황에 따라서 사용


Step 10. LOAD DATA LOCAL INFILE 명령어를 이용해 1.txt부터 17.txt까지 넣어준다.

mysql >
LOAD DATA LOCAL INFILE "/home/boeun/address_DB/1.txt" 
INTO TABLE ZIPCODE CHARACTER SET 'utf8' FIELDS TERMINATED BY '|' IGNORE 1 LINES;

데이터를 insert 하는데에 시간이 좀 걸린다


txt 앞의 숫자만 바꿔서 Insert하면 편하다.

Step 11. ZIPCODE 테이블에 레코드 잘 입력되었는지 확인

 

** 참고 링크
Window ↔ Ubuntu간 복사붙여넣기 방법 참고

https://3dmpengines.tistory.com/1943

 

ubuntu 와 window 간의 복사 붙여넣기 세팅 (viritual box)

1. 먼저 일반->고급-> 클립보드 공유와 드래그 앤 드롭을 양방향으로 세팅 그다음 저장소->컨트롤러IDE->iso 이미지를 VBoxGuestAdditions.iso 로 변경 해준 다음 파일 창에서 VBox_CAs_5.2.12 를 클릭하면 왼쪽

3dmpengines.tistory.com


주소 테이블 참고

https://choco4study.tistory.com/66?category=1054456

 

[웹개발] 주소 검색 기능 (1) : 주소 DB 자체 구축 (MySql)

* 개인적인 공부 내용을 기록한 글입니다. 사담 드디어 주소 DB! 이제 개발은 진짜 끝이다. 설명 주소 검색 기능을 구현하는 과정은 크게 둘로 나눌 수 있다. [1] 주소 DB 구축 [2] 회원가입 시 주소

choco4study.tistory.com

 

load data local infile 환경설정 참고

https://gaemi606.tistory.com/entry/MySQL-load-data-infile-ERROR

 

MySQL | load data infile ERROR

해당 에러로 찾아보면, my.cnf파일을 수정하라는 말들이 많은데, 아래 설정만 제대로 해주면 잘 된다..! load data infile을 load data local infile로 변경 load data infile 은 특정 경로에 있는 파일만 읽도록..

gaemi606.tistory.com

 

load data local infile SQL문 참고

https://sssunho.tistory.com/55

 

[MySQL] Load Data, 파일로 데이터 Import 하기

DB의 데이터를 옮길 때가 있습니다. 옮기는 다양한 방법 중에 하나로, MySQL 쿼리문을 이용하여 파일로 저장된 데이터를 DB로 옮기는 작업을 해봤습니다. SQL문 LOAD DATA LOCAL INFILE '/path/your_data.csv' INT.

sssunho.tistory.com

 

댓글