회사에서 필요한 기능중 주소를 기반으로 우편번호를 매칭해서 넣는 기능이 필요.

했었던 적이 있었어요.

 

그때는 여차저차 하면서 정리를 안해놔서...

한 8개월 정도 지난상태인데, 주소가 많이 업데이트 되었을테니,

다시 업데이트 할 필요가 있다고 생각!!

 

하는김에 정리를 해보자.

 

https://www.juso.go.kr/addrlink/addressBuildDevNew.do?menu=rdnm

 

건물DB | 도로명주소 DB 다운로드 | 도로명주소 개발자센터

건물DB (구 전체주소) --> 도로명주소를 구성하는 기본 단위인 건물정보와 해당 건물이 위치한 토지(지번)정보로 구성된 DB입니다. 하나의 도로명주소가 부여된 단지형 아파트의 경우에도 상세 동

www.juso.go.kr

 

일단 위 사이트에서 건물DB 전체자료를 받자.

워낙 안했으니 전체자료를 하는게 속편할듯.

 

그리고 합쳐줘야 하기도 하지만...변환도 해줘야함.

해당 파일은 euc-kr이라 iconv 를 이용해 utf-8로 해줘야함~!

 

> cat *.txt > address.txt
> ll
-rw-r--r-- 1 root root 1657160613  6월 18 10:40 address.txt
-rw-r--r-- 1 root root   64284639  6월 18 10:30 build_busan.txt
-rw-r--r-- 1 root root   95161072  6월 18 10:30 build_chungbuk.txt
-rw-r--r-- 1 root root  134380135  6월 18 10:32 build_chungnam.txt
-rw-r--r-- 1 root root   41286526  6월 18 10:30 build_daegu.txt
-rw-r--r-- 1 root root   22491386  6월 18 10:31 build_daejeon.txt
-rw-r--r-- 1 root root   88129338  6월 18 10:32 build_gangwon.txt
-rw-r--r-- 1 root root   26507714  6월 18 10:32 build_gwangju.txt
-rw-r--r-- 1 root root  219161506  6월 18 10:34 build_gyeongbuk.txt
-rw-r--r-- 1 root root  199317967  6월 18 10:34 build_gyeongnam.txt
-rw-r--r-- 1 root root  252300939  6월 18 10:37 build_gyunggi.txt
-rw-r--r-- 1 root root   41208599  6월 18 10:35 build_incheon.txt
-rw-r--r-- 1 root root   40241010  6월 18 10:35 build_jeju.txt
-rw-r--r-- 1 root root  124816202  6월 18 10:37 build_jeonbuk.txt
-rw-r--r-- 1 root root  175555503  6월 18 10:39 build_jeonnam.txt
-rw-r--r-- 1 root root    8595016  6월 18 10:37 build_sejong.txt
-rw-r--r-- 1 root root   98541954  6월 18 10:38 build_seoul.txt
-rw-r--r-- 1 root root   25181107  6월 18 10:39 build_ulsan.txt

> iconv -c -f euc-kr -t utf-8 address.txt -o utf8_address.txt

 

이번에 하면서 알게된건데, 합치고 변환하지 말고 그냥...

> iconv -c -f euc-kr -t utf-8 *.txt -o address.txt 

이렇게 하면 합치기도하고 변환도 하고...한방에 되는...

두줄 입력할거 한줄하는거라 큰 차이는 없지만 에헴 ㅎㅎ

 

 

요새 구주소(지번주소) 사용하는분들중 인터넷쇼핑 하는분들 별로 안계실테니...도로명주소만 하는걸로 ㅎㅎ

 

그리고 vi로 열어서 헤더를 입력해줘야함!

lawTownCode|city|ward|town|lee|isMountaion|jibun|jibunSub|roadCode|road|isUnderground|buildingNumber|buildingNumberSub|buildingName|buildingNameDetail|buildingControlNumber|dongNumber|dongCode|dongName|zipcode|zipcodeNumber|massDlvr|moveReasonCode|stdnDate|preRoadName|cityBuildingName|isPublic|newZipCode|idDetailAddr|etc1|etc2

 

이제 logstach conf 파일을 만들어야함.

> vi logstash_address.conf

input {
  file {
    path => "/경로/address/202005/address.txt"
    start_position => "beginning"
    sincedb_path => "/dev/null"
  }
}
filter {
  csv {
      separator => "|"
      columns => ["lawTownCode","city","ward","town","lee","isMountaion","jibun","jibunSub","roadCode","road","isUnderground","buildingNumber","buildingNumberSub","buildingName","buildingNameDetail","buildingControlNumber","dongNumber","dongCode","dongName","zipcode","zipcodeNumber","massDlvr","moveReasonCode","stdnDate","preRoadName","cityBuildingName","isPublic","newZipCode","idDetailAddr","etc1","etc2"]
      add_field => {"createDateTime" => "2020-05-01 12:12:12"}
      remove_field => ["@version", "host", "@timestamp"]

  }
}
output {
    elasticsearch {
        document_id => "%{buildingControlNumber}"
        hosts => "localhost"
        index => "zipcode"
    }
}

es 홈피 찾아보면 되는 간단한 문법들!

그래도 잘 모르겠다면

아래 허민석님의 채널 참고!

https://www.youtube.com/watch?v=iq3t7X_9URA&list=PLVNY1HnUlO24LCsgOxR_eK2Yi4sOgH9Pg&index=18

 

저는 로그스태시 사용하는걸 위에서 배웠어요~!

좋은건 나눠야지 ㅎㅎ

 

 

이제 실행~

/usr/share/logstash/bin/logstash -f logstash_address.conf 

한참 걸려요...

 

이후 키바나 매트릭스 date range 걸어서 확인..얼마나 넘어왔는ㅈㅣ...ggg

작년에 넣은 기존 데이터가 천만건 정도니까..얘도 그것보다 많으면 많지 적지는 않을테니...

+ Recent posts