우편번호

오픈소스 비즈니스 컨설팅
둘러보기로 가기 검색하러 가기

우편번호 검색 서비스를 오픈 API로 제공한다. REST 방식에 JSON을 기본으로 제공하며 JavaScript 라이브러리와 iframe 형태로 사용할 수 있는 라이브러리를 제공한다.

설치전 사전 준비 사항

최신 우편번호 수집

  • 화면 좌측의 "우편번호검색" 메뉴를 클릭하여 새 창을 띄운다.
  • "우편번호 내려받기" 버튼에서 "고시 우편번호 DB"를 클릭하여 mic_zipcode_DB.exe 파일을 다운로드 한다.
  • mic_zipcode_DB.exe 파일을 실행하면 다음 파일이 포함된 "우편번호파일" 디렉토리가 생긴다.
  • 우편번호 DB활용방법.txt
  • 20080327_변경분.xls
  • 20080327_우편번호(기존형태).xls
  • 20080327_우편번호(분리형태).xls (우편번호 오픈 API에서 사용할 우편번호 정보)
우편번호 코드 다운로드
  • 20080327_우편번호(분리형태).xls 파일의 구조
명칭 코드 종류 및 크기 기타
우편번호 zipcode char(6)  
일련번호 serial char(3)  
주소 : 시도 addr01 varchar(30)  
주소 : 시군구 addr02 varchar(30)  
주소 : 읍면동 addr03 varchar(30)  
주소 : 리 addr04 varchar(30)  
주소 : 도서 addr05 varchar(30)  
산번 bungi varchar(30)  
시작번지 : 주 bungifrmain varchar(30)  
시작번지 : 부 bungifrsub varchar(30)  
끝번지 : 주 bungitomain varchar(30)  
끝번지 : 부 bungitosub varchar(30)  
아파트/건물명 building varchar(30)  
동범위 : 시작 dongfr varchar(30)  
동범위 : 끝 dongto varchar(30)  
변경일 datechange varchar(8)  
주소 addr varchar(100)  

MySQL에 우편번호 저장

DB Schema와 사용자 추가 설정

  • MySQL에 추가 Schema를 등록한다.
  1. MySQL Administrator에 root 관리자로 로그인 한다.
  2. 좌측 상단 창에서 "Catalogs"를 선택한다.
  3. 좌측 하단의 "Schemata" 창에서 우측 마우스를 누른다.
  4. "Create New Schema" 메뉴를 선택하여 Schema를 생성한다.
  5. Schema 생성화면에서 "Schema name"으로 "openapidb"를 입력한다.
설치 시작


  • MySQL에 추가 사용자를 등록한다.
  1. 좌측 상단 창에서 "User Administration"을 선택한다.
  2. 좌측 하단의 "Users Accounts" 창에서 우측 마우스를 누른다.
  3. "Add new user" 메뉴를 선택하여 사용자를 생성한다.
  4. "User Information" 탭에서 "MySQL User"("openapi"), "Password", "Confirm Password" 등을 등록한다.
설치 시작


  • MySQL에서 사용자의 권한을 설정한다.
  1. "Schema Privileges" 탭에서 사용자가 사용할 Schema("openapidb")를 선택한다.
  2. "Available Privileges"의 모든 권한을 "Assigned Privileges"로 이동한다.
  3. "Apply changes" 버튼을 눌려 등록된 정보를 저장한다.
설치 시작


  • MySQL Query Browser에 접속한다.
  1. 상단의 "Tools" 메뉴에서 "MySQL Query Browser" 메뉴를 선택한다.
Query Browser 접속


  • 사용자의 MySQL 데이터베이스 접속 정보를 추가한다.
  1. 우측의 "Schemata" 탭에서 "mysql"을 더블 클릭하여 선택한다.
  2. grant all privileges on openapidb.* to openapi@localhost identified by '암호'; (사용자에게 Schmea에 대한 권한을 추가)
  3. flush privileges; (위 명령을 통해 설정한 권한을 데이터베이스에 반영)
  4. select host, user, password from user; (사용자의 접속 정보 확인)
접속 권한 설정
  • MySQL Query Browser가 아니라 DOS 창에서 접속 정보를 추가하는 방법
mysql -uroot -pxxx mysql
    grant all privileges on openapidb.* to openapi@localhost identified by '암호';
    flush privileges;
    select host, user, password from user;
    exit


DB에 zipcode 테이블 생성

  • MySQL Query Browser에 접속한다.
  1. 상단의 "Tools" 메뉴에서 "MySQL Query Browser" 메뉴를 선택한다.
Query Browser 접속


  • MySQL 데이터베이스에서 생성할 우편번호(zipcode) 테이블 생성 SQL 문을 작성한다.
  • 우측의 "Schemata" 탭에서 "openapidb"을 더블 클릭하여 openapidb에 접속한다.
  • 문자셋(charset)은 유니코드(UTF8)로 설정하여 zipcode 테이블을 생성하는 sql문을 실행한다.
create table zipcode (
  zipcodeid int(11) not null auto_increment primary key,
  zipcode char(6) default null,
  serial char(3) default null,
  addr01 varchar(30) default null,
  addr02 varchar(30) default null,
  addr03 varchar(30) default null,
  addr04 varchar(30) default null,
  addr05 varchar(30) default null,
  bungi varchar(30) default null,
  bungifrmain varchar(30) default null,
  bungifrsub varchar(30) default null,
  bungitomain varchar(30) default null,
  bungitosub varchar(30) default null,
  building varchar(30) default null,
  dongfr varchar(30) default null,
  dongto varchar(30) default null,
  datechange varchar(8) default null,
  addr varchar(100) default null
) engine=InnoDB default charset=utf8;
  • 다른 데이터베이스에서 테이블을 생성하기 위해 아래 데이터베이스 컬럼 타입 매핑 (Database Column Type Mappings)을 참조하라.
Oracle Informix MS SQL Sybase MySQL MS Access IBM DB2
char char char char char varchar varchar
varchar2 varchar(255), lvarchar varchar varchar varchar(255), text varchar varchar
integer integer int int int integer int
long text text text mediumtext memo long
  • 괄호안의 숫자는 해당 필드의 사이즈(크기) 제한이므로 참조하세요.

우편번호 excel 파일을 CSV 파일로 변환

  • "20080327_우편번호(분리형태).xls" 파일을 열어 1행과 2행을 삭제한다.
Query Browser 접속


  • F12 키를 누른 후 "파일 이름"에 "zipcode"를 "파일 형식"에 "CSV (쉼표로 분리) (*.csv)"를 선택하여 다른 이름(zipcode.csv)으로 저장한다.
Query Browser 접속


  • 자신이 사용하는 편집기에서 zipcode.csv 파일을 읽어 문자셋(charset)을 UTF-8로 변환하여 저장한다.
  • UltraEdit-32 Version 9.0 사용시 "File -> Conversions -> ASCII to UTF-8 (Unicode Encoding)" 메뉴를 사용한다.
  • Notepad++ v4.8.5 사용시 "형식(M) -> Conver to UTF-8" 메뉴를 사용한다.
  • JDK를 사용하여 인코딩할 경우 문자셋과 인코딩을 참고한다.
native2ascii -encoding EUC_KR  zipcode.csv zipcode.tmp  
native2ascii -reverse -encoding UTF8  zipcode.tmp  zipcode_utf8.csv
  • zipcode.csv 파일의 맨 마지막에 빈 라인이 있으면 데이터 로딩시 warning이 발생하므로 빈 라인을 삭제한다.


우편번호를 DB로 로딩

  • 생성한 zipcode.cvs 파일을 d:/ 디렉토리에 복사한다.
  • MySQL Administrator에서 "Tools -> MySQL Command Line Client" 메뉴를 선택하여 Client 창을 띄운다.
  • zipcode.cvs를 다음 명령을 사용하여 MySQL에 로딩한다.
mysql> load data local infile 'd:/zipcode.csv'
into table openapidb.zipcode
fields terminated by ','
lines terminated by '\n'
(zipcode, serial, addr01, addr02, addr03, addr04, addr05, 
 bungi, bungifrmain, bungifrsub, bungitomain, bungitosub, 
 building, dongfr, dongto, datechange, addr);
Query Browser 접속
  • Deleted나 Skipped가 발생하면 원인을 확인한 후 다시 작업을 한다.
  • "show warnings;" 명령을 사용하여 warnings을 확인할 수 있다.
  • 위 화면의 warning은 zipcode.csv 파일의 맨 마직막 라인이 비어 있어서 발생 하였다.
  • Database에 로드된 레코드의 갯수를 확인하여 정상 로드되었는지 검사한다.
mysql> select count(*) from openapidb.zipcode;

Open API 설계

보안 설계

  • login
http://www.jopenbusiness.com/api/login.do
  userid=
  password=
  • logout
http://www.jopenbusiness.com/api/logout.do
  userid=
  password=

Query 설계

  • describe
http://www.jopenbusiness.com/api/describe.do
  object=objectName
  • search
http://www.jopenbusiness.com/api/searchZipcode.do
  type=1 (주소로 우편번호 검색)
  query=불광동
  pageSize=20
  page=1
  • select
http://www.jopenbusiness.com/api/select.do
  query=select * from zipcode
  pageSize=20
  page=1
  • insert
http://www.jopenbusiness.com/api/insert.do
  object=JSON
  • update
http://www.jopenbusiness.com/api/update.do
  object=JSON
  • delete
http://www.jopenbusiness.com/api/delete.do
  objectIds=ID배열

참조 설계

  • list
http://www.jopenbusiness.com/api/list.do
  query=select * from zipcode
  search=[type, value]
  sort=[type, asc]
  pageSize=20
  page=1
  css=[cssURL]

도로명 주소

PC용 주소 검색기

  • c:/PCRNS/
    • pcrns.h2.db : 2.9GB
    • pcrns_cfg.h2.db

주소 검색 솔루션


주소 검색 Open API


참고 문헌

참고문헌