우편번호 DB로 업데이트 하기(txt 파일)

리퍼러 로그를 보다가 보니 '우편번호 DB'라는 키워드가 많더군요.
뭐 없는 실력이지만 아주 간단하게(-_-)라도 만들어 보자스라.
웹 사이트를 새로 만드는 사람들도 있겠고 기존 우편번호가 너무 구식이라 업데이트만 하려는 사람도 있겠고.
아니면 나처럼 뻘짓하는 사람도 있겠고.

닥치고 갑니다.

가장 먼저 해야 할 게 텍스트 우편번호를 텍스트 파일로 만들어야 할 것입니다.
http://www.postman.pe.kr/zipcode/index.html
위 사이트로 가서 가장 최근 우편번호를 다운로드 받아야 하겠죠.
저는 Type 1을 다운로드 하겠습니다.
디비 스키마에 맞춰서 다운로드 하셔야 한다는 건 당연히 아시죠?

다운로드한 파일을 열어 보겠습니다.
zipcode_20081119(1).dbf
저는 이런 파일이네요.
dbf 확장자는 Excel에서 열면 됩니다.
엑셀에서 여시면 제일 첫 번째 줄이
ZIPCODE GUGUN DONG BUNJI SEQ
이렇게 되어 있죠?
얘는 당연히 삭제를 하셔야 합니다.
아니면 얘도 같이 디비에 들어갑니다.
그리고 제일 마지막 칸인 SEQ 이건 마지막 줄까지 모두 날려 버리세요.
굳이 안 넣어도 되는 부분입니다.
위 사이트에서 보시면 쟤에 대한 설명이 나오는데요, 저는 필요가 없어서 날려 버렸습니다.
넣으실 분은 넣으셔도 됩니다.

이제 이 수정된 파일을 텍스트 파일로 저장을 해야 합니다.
대신 디비에 저장할 때 필드마다 구분을 해야 하기 때문에 아래와 같은 형식으로 저장을 합니다.






우편번호 파일 가공(?)은 끝이 났으니 코드 부분을 보겠습니다.
저는 우편번호 업데이트를 하기 위해서 기존 우편번호는 그대로 두고 새로운 새로운 테이블을 만들었습니다.
현재 돌아가고 있는 홈페이지의 경우는 이 방식으로 하셔야 할 겁니다.

테이블은 다들 만들 줄 아시죠?
  1. <?
  2. $que = "CREATE TABLE temp_zipcode(
  3. uid int auto_increment,
  4. code varchar(7),
  5. addr1 varchar(4),
  6. addr2 varchar(13),
  7. addr3 varchar(255),
  8. addr4 varchar(255),
  9. PRIMARY KEY(uid));";
  10. $res = mysql_query($que);
  11. ?>
테이블은 위처럼 해서 살짝 만들어 주시면 됩니다.

실질적으로 돌아가는 부분의 코드를 살펴 보겠습니다.
  1. <?
  2. $fileName = "zipcode_20081119(1).txt";
  3. $fileOpen = fopen($fileName, "r");

  4. while($fileRead = fread($fileOpen, filesize($fileName))) {
  5.     $fileN = explode("\n", $fileRead);
  6.     foreach($fileN as $value) {
  7.         $fileT = explode("\t", $value);
  8.         $que = "insert into temp_nt_zipcode set
  9.         code = '$fileT[0]',
  10.         addr1 = '$fileT[1]',
  11.         addr2 = '$fileT[2]',
  12.         addr3 = '$fileT[3]',
  13.         addr4 = '$fileT[4]'";
  14.         $res = mysql_query($que);
  15.     }
  16. }

  17. $oQuery = "alter table 원래우편번호테이블 rename backup_zipcode";
  18. $oResult = mysql_query($oQuery);

  19. $nQuery = "alter table temp_zipcode rename 원래우편번호테이블";
  20. $nResult = mysql_query($nQuery);
  21. ?>

이게 끝이네요.
특별히 뭐 어려운 부분은 없습니다.
마지막은 테이블 바꿔치기 하는 거겠구요.
fread, fopen, explode만 아시면 되겠네요.

이 글을 공유하기

댓글(0)

Designed by JB FACTORY