Header

  1. View current page

    미자의 연습장

Profile_img_60x60_08
4

5. 우편번호 검색용 DB 만들기(엑셀 import)

우편번호 주소 데이타 확보

우체국(http://www.epost.go.kr/) 사이트 좌측 우체국정보의 우편번호 검색 클릭>우편번호 내려받기의 정통부 고시 우편번호 DB 다운로드(바로 실행)>'C:우편번호파일' 폴더가 자동으로 생성됨.

신규로 만드는 DB이므로 굳이 기존형태가 아닌 최근 분리형태의 2007년 3월 30일자 '분리형태' 엑셀파일의 데이타를 이용함.

 

데이타 성격파악 및 작업방향 결정
  1. Primary Key 결정: "우편번호 DB 활용방법.txt"를 보면, 우편번호 + 일련번호가 Primary key라고 하지만," 변경분.xls" 파일을 보면 일련번호가 변경된 경우가 있으므로, 우편번호+일련번호를 Primary key로 이용하지 않고 MySQL의 자동생성 일련번호를 사용하기로 함.
  2. 테이블 필드 결정: 향후 데이타 추가나 변경을 쉽게 하기위해 실제 사용하지 않는 필드라 할지라도 excel 파일의 모든 필드를 DB 필드로 그대로 사용. (특히 엑셀 import 시 엑셀 작업을 최소한으로 줄이기 위해)
  3. 검색대상 필드: 주소 선택까지의 과정을 줄이기 위해, 검색 대상 필드는 성능에 지장을 주지 않는 범위 내에서, 검색 결과과 너무 많지 않는 선에서, 최대한 많이. 따라서 "우편번호", "시도", "시군구", "읍면동", "리", "도서"  총 6개 필드를 검색 대상으로 결정함. (화면에서 검색창을 띄운 후 검색을 하는 것이 아니라, 바로 입력 후 검색 버튼을 누르면 결과 창(검색어 입력 박스 포함)이 뜨는 방식을 사용할 예정)
  4. 검색방식: 해당 필드의 값이 검색어를 포함하고 있으면... 따라서 검색어 좌우에 와일드 카드를 검색에 좌우에 모두 둠.
  5. 검색결과로 보여줄 필드: "우편번호", "주소"
  6. 실제 자동 입력 값: "주소" 필드는 주소 입력값으로 쓰면 지워야 하는 데이타(예. "123번지~522번지")를 포함하고 있으므로,  "시도", "시군구", "읍면동" 등의 필드를 잘 합쳐서 최대한 자세한 내용, 하지만 지울 필요가 없는 내용이 자동으로 입력되도록 할 예정.

 

우편번호 테이블을 내 컴퓨터의 MySQL 서버에 만들기
  1. 테이블을 만드는 것은 SQLyog보다 Mysql Query Browser가 더 편한 것 같으므로,  Mysql Query Browser 실행 후 2. 내 컴퓨터에 DB 서버 만들기(MySQL)에서 생성해둔 "test" DB로 접속
  2. 2. 내 컴퓨터에 DB 서버 만들기(MySQL)의 4. 테이블 만들기에 나온 것 처럼 "ZIP_CODE" 테이블 생성. 대략적인  내용은 아래와 같음. 

CREATE TABLE  `test`.`real_zip_code` (
  `zipCodeId` int(11) NOT NULL auto_increment,
  `zipCode` char(6) default NULL,
  `zipCodeSerial` char(3) default NULL,
  `siDo` varchar(30) default NULL,
  `siGunGu` varchar(30) default NULL,
  `uypMunDong` varchar(30) default NULL,
  `li` varchar(30) default NULL,
  `island` varchar(30) default NULL,
  `sanBungi` varchar(30) default NULL,
  `startingBungiMain` varchar(30) default NULL,
  `startingBungiTail` varchar(30) default NULL,
  `endingBungiMain` varchar(30) default NULL,
  `endingBungiTail` varchar(30) default NULL,
  `buildingName` varchar(30) default NULL,
  `startingDong` varchar(30) default NULL,
  `endingDong` varchar(30) default NULL,
  `updateDate` varchar(8) default NULL,
  `viewListAddress` varchar(100) default NULL,
  PRIMARY KEY  (`zipCodeId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

데이타를 테이블에 import 하기 위한 데이타 전처리
  1. 엑셀 파일의 Header(1번, 2번 행) 삭제. (삭제하지 않을 경우에는 첫 두줄을 무시하기 위해 아래 이미지에서 ignore:  lines를 선택하고 0대신 2로 세팅)
  2. 파일>다른이름으로 저장에서 "유니코드 텍스트"나 "텍스트(탭으로 구분) 파일로 저장.
  3. 메모장으로 텍스트 파일을 열어서 제일 아래 빈 라인에 커서가 위치되어 있는 것을 백스페이스 키를 이용해 데이타가 있는 마지막 라인의 끝에 오도록 함.(빈 라인이 있으면 SQLyog에서는 Import시 에러남.)
  4. 다른 이름으로 저장에서 인코딩을 유니코드에서 UTF-8로 변경하고 저장.

 

엑셀데이타를 MySQL DB 테이블에 Import하기
  1. SQLyog를 실행해서 'test' DB에 접속
  2. 좌측 root@localhost>test>zip_code 클릭> 오른쪽 클릭> Import Data From CSV 선택
  3. 아래 이미지와 동일하게 값 세팅

주의1. zipCodeId 컬럼은 DB에서 생성하는 값이므로 Import 대상이 아님(클릭해서 하얀색으로 선택해제 시킴)

주의2. Change 버튼을 클릭해서 아래 이미지의 작은 창이 뜨면 이미지와 동일하게 값 세팅. 기본으로 세팅되어 있는 값 사용 시 오류남.

 

 데이타import옵션.png

 

 

History

Last edited on 06/06/2007 22:34 by meeja96

Comments (0)

You must log in to leave a comment. Please sign in.