#01. 우편번호를 우체국 사이트에서 다운 받는다
http://www.epost.go.kr/search/zipcode/newAddressDown.jsp
#02. 엑셀로 변환한다
(아래 내용은 우체국 사이트에도 있습니다)
CSV(텍스트) 파일로 저장한다
#03. CSV(텍스트) 파일을 DB 에 입력한다
1. DB 테이블 생성
DROP TABLE IF EXISTS `address_org`;
CREATE TABLE `address_org` (
`idx` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '일련번호',
`zipcode` CHAR(6) NULL DEFAULT NULL COMMENT '우편번호',
`zipcode_no` VARCHAR(5) NULL DEFAULT NULL COMMENT '우편일련번호',
`sido` VARCHAR(50) NULL DEFAULT NULL COMMENT '시도',
`sido_e` VARCHAR(70) NULL DEFAULT NULL COMMENT '시도영문',
`sigungu` VARCHAR(50) NULL DEFAULT NULL COMMENT '시군구',
`sigungu_e` VARCHAR(70) NULL DEFAULT NULL COMMENT '시군구영문',
`upmyon` VARCHAR(45) NULL DEFAULT NULL COMMENT '읍면',
`upmyon_e` VARCHAR(70) NULL DEFAULT NULL COMMENT '읍면영문',
`road_code` VARCHAR(35) NULL DEFAULT NULL COMMENT '도로명코드',
`road_name` VARCHAR(50) NULL DEFAULT NULL COMMENT '도로명',
`road_name_e` VARCHAR(70) NULL DEFAULT NULL COMMENT '도로명영문',
`is_under` CHAR(1) NULL DEFAULT NULL COMMENT '지하여부',
`bdno_M` VARCHAR(30) NULL DEFAULT NULL COMMENT '건물번호본번',
`bdno_S` VARCHAR(30) NULL DEFAULT NULL COMMENT '건물번호부번',
`bdno_D` VARCHAR(50) NULL DEFAULT NULL COMMENT '건물관리번호',
`mass_delevery` VARCHAR(50) NULL DEFAULT NULL COMMENT '다량배달처명',
`sigungubd_name` VARCHAR(50) NULL DEFAULT NULL COMMENT '시군구용건물명',
`law_dong_code` VARCHAR(35) NULL DEFAULT NULL COMMENT '법정동코드',
`law_dong_name` VARCHAR(50) NULL DEFAULT NULL COMMENT '법정동명',
`ri` VARCHAR(45) NULL DEFAULT NULL COMMENT '리',
`is_mountin` CHAR(1) NULL DEFAULT NULL COMMENT '산여부',
`jibun_M` VARCHAR(10) NULL DEFAULT NULL COMMENT '지번본번',
`upmyundong_no` VARCHAR(5) NULL DEFAULT NULL COMMENT '읍면동일련번호',
`jibun_S` VARCHAR(10) NULL DEFAULT NULL COMMENT '지번부번',
PRIMARY KEY (idx),
INDEX inx_roadnume (road_name)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='도로명주소 원본';
2. PHP 소스 작업
$enclosed = '"';
$escaped = '\\';
$lineend = '\\r\\n';
$ignore = "";
$afields = array( 'zipcode', 'zipcode_no', 'sido', 'sido_e', 'sigungu', 'sigungu_e', 'upmyon', 'upmyon_e', 'road_code', 'road_name', 'road_name_e', 'is_under', 'bdno_M', 'bdno_S', 'bdno_D', 'mass_delevery', 'sigungubd_name', 'law_dong_code', 'law_dong_name', 'ri', 'is_mountin', 'jibun_M', 'upmyundong_no', 'jibun_S' );
$query = "LOAD DATA LOCAL INFILE '".$table_name.".csv' INTO TABLE address_org \n";
$query .= "FIELDS TERMINATED BY ',' \n";
$query .= "OPTIONALLY ENCLOSED BY '\"' \n";
$query .= "LINES TERMINATED BY '\n' \n";
$query .= "(" . implode(',', $afields) . "); ";
mysql_query($query) or die ("Query error: " . mysql_error());
위의 작업을 함수 형태로 만들어 써도 되겠다
function import_csv( $table, $afields, $filename, $delim = ',', $enclosed = '"', $escaped = '\\', $lineend = '\\r\\n', $hasheader = FALSE) {
if ( $hasheader ) $ignore = "IGNORE 1 LINES ";
else $ignore = "";
$q_import =
"LOAD DATA INFILE '" . $_SERVER['DOCUMENT_ROOT'] . $filename . "' INTO TABLE " . $table . " " .
"FIELDS TERMINATED BY '" . $delim . "' ENCLOSED BY '" . $enclosed . "' " .
" ESCAPED BY '" . $escaped . "' " .
"LINES TERMINATED BY '" . $lineend . "' " . $ignore . "(" . implode(',', $afields) . ")"
;
return mysql_query($q_import);
}
이상 새주소(도로명) 입력 방법 입니다.
`address_org` 테이블 데이터들을 가공하여 원하시는대로 사용하세요~