프로그램 개발서

[PHP][CI3][Mysql] 주소 디비 만들기 본문

PHP

[PHP][CI3][Mysql] 주소 디비 만들기

rairen 2021. 6. 21. 11:01

주소 디비를 만들어볼까합니다.

 

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. 모델

모델은 그냥 입력만하므로 패스.

 

주소디비는 이것으로 만들었으니 다음은 검색을 해봅시다

반응형