[PHP][CI3][Mysql] 주소 디비 만들기
주소 디비를 만들어볼까합니다.
php 웹을 통해 디비화하는 작업이기 떄문에 시간이 올래걸릴 수 있습니다.
간단하게 처리한것이므로 시간적으로 더 효율적으로 하려면 이 글을 참고하시어 작업하시면 될 것 같습니다.
1. 도로명주소 사이트에 접속합니다.
https://www.juso.go.kr/openIndexPage.do
도로명주소 안내시스템
1. 2차원 평면주소가 3차원으로 입체화됩니다. 2. 건물중심에서 사물과 공터까지로 주소가 촘촘해집니다. 3. 주소서비스가 국민중심으로 편리해집니다. --> - 시행일 : 2021년 6월 9일(수) - 주요내용
www.juso.go.kr
2. 개발자센터 이동
https://www.juso.go.kr/addrlink/main.do?cPath=99JM
도로명주소 개발자센터
www.juso.go.kr
3. 좌측 메뉴 '주소DB제공' > '도로명 주소DB 다운로드' > '주소DB' 클릭
https://www.juso.go.kr/addrlink/addrlinkJusoDBUse.do?menu=match
도로명주소DB 활용방법 | 도로명주소 개발자센터
주소DB 아파트단지(또는 집합건물), 단독건물 등의 출입구 위치를 기준으로 부여된 주소 정보입니다. (아파트단지(또는 집합건물 등)가 여러 동으로 구성되어도 출입구 기준 하나의 주소정보만
www.juso.go.kr
4. 전체자료 > 해당 월 클릭하여 다운로드
5. CI3 프로젝트 준비
6. 프로젝트 내 주소디비 파일 넣기
7. 컨트롤러
private function address()
{
ini_set('memory_limit', -1);//php 메모리 설정을 제한풀음.
set_time_limit(60 * 60 * 2);//php 동작 제한시간 2시간
$this->load->helper('file');//file helper 불러오기
$this->load->model('Address_model', 'addressModel');//디비 입력 모델 불러오기
echo "-- 주소 입력 시작 --<br>" . PHP_EOL;
$road_name_code_path = set_realpath('[경로]/개선_도로명코드_전체분.txt');//파일경로
$string = file_get_contents($road_name_code_path);//파일 내용 읽기
$array = explode(PHP_EOL, $string);//엔터를 기준으로 나눔.
foreach ($array as $key => $item)
{
if(isset($item) and !empty($item))
{
//문자열이 있어야 처리되도록 조건 걸음
$cul = explode('|', $item);//컬럼별로 나눔.
foreach ($cul as $k => $v)
{
if (isset($v) and ! empty($v))
{
$cul[$k] = iconv('EUC-KR', 'UTF-8//TRANSLIT', $v);
} else
{
$cul[$k] = '';
}
$insert = array(
'[도로명코드]' => "{$cul[0]}",
'[도로명]' => "{$cul[1]}",
'[도로명 로마자]' => "{$cul[2]}",
'[읍면동 일련번호]' => "{$cul[3]}",
'[시도명]' => "{$cul[4]}",
'[시도명 로마자]' => "{$cul[5]}",
'[시군구]' => "{$cul[6]}",
'[시준구 로마자]' => "{$cul[7]}",
'[읍면동]' => "{$cul[8]}",
'[읍면동 로마자]' => "{$cul[9]}",
'[읍면동 구분]' => "{$cul[10]}",
'[읍면동 코드]' => "{$cul[11]}",
'[사용여부]' => "{$cul[12]}",
'[변경사요]' => "[$cul[13]]",
'[변경이력정보]' => "{$cul[14]}",
'[고시일자]' => "{$cul[15]}",
'[말소 일자]' => "{$cul[16]}"
);
$this->addressModel->insertRoadNameCode($insert);
}
}
}
}
부가정보, 주소, 지번 파일도 위와 같은 방식으로 진행합니다.
총합 대략 2천만건 조금 넘기떄문에 시간이 걸리니 차분이 진행합니다.
8. 모델
모델은 그냥 입력만하므로 패스.
주소디비는 이것으로 만들었으니 다음은 검색을 해봅시다