데이타베이스/MySQL

우편번호 MySQL DB에 집어넣기

하얀소닉 2012. 5. 5. 21:45

사적인 내용은 제거하고, 정보만 전달하려고 합니다. 혹시 폰트 문제가 있으시다고 그러면 내리겠습니다.

  제가 티스토리로 Google Analytics로 수익을 얻는 것도 아니니,

  혹시라도 비상업적이어도 문제의 소지가 있다면,

  이메일 주소 ryadjs@tistory.com 로 문의해주시기 바랍니다. 자주 사용하는 메일이 아니다보니,

  조금 응답이 느릴 수 있습니다.

  그리고 보내실 때, 제목 포함 + 실명 또는 닉네임 표기

  제가 이걸 강조하는 이유는 제 메일이 좀 오래되다 보니, 스팸메일이 많습니다. 


우편번호 DB에 올려봅시다.

자바 path를 설정해줄때 C:\Program Files\Java\jdk1.6.0_31\bin 을 해주듯이

MySQL도 path를 설정해줘야 합니다.

 

C:\Program Files\NVIDIA Corporation\PhysX\Common;%JAVA_HOME%\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Java\android-sdk-windows\tools;C:\Java\android-sdk-windows\platform-tools;%CATALINA_HOME%\bin;C:\Program Files\MySQL\MySQL Server 5.5\bin

아 그리고 보통 밑줄 친 전에 ; 것이 없을 것입니다... 세미콜론 추가하고 적어주는거 잊지 맙시다

이렇게 한 다음 파일을 받야야합니다. http://www.zipfinder.co.kr/

들어가줘서 Type 1을 받아줍니다... 저 같은경우에는

 

여기서 중요한거는 텍스트문서인데 파일을 올려놓겠는데 최신버젼을 받을려면 아까 말했던 집파인더 사이트가서 txt파일을 받아줍니다. 전 살짝 이파일을 수정했습니다. zipcode_20120126(1) -> zipcode_20120126

자 그리고 DB에서 컬럼을 CREATE  TABLE `mymulti`.`zipcode` (

  `zipcode` CHAR(7) NOT NULL ,

  `sido` VARCHAR(4) NOT NULL ,

  `gugun` VARCHAR(17) NOT NULL ,

  `dong` VARCHAR(52) NOT NULL ,

  `bunji` VARCHAR(17) NOT NULL ,

  `seq` INT(5) UNSIGNED NOT NULL ,

  PRIMARY KEY (`zipcode`, `seq`) )

ENGINE = InnoDB

DEFAULT CHARACTER SET = euckr;

이 사이트에 나와있는 컬럼 길이를 정했는데 맞는지 모르겠군요.. 의심이 가신다면 조금씩 늘려주셔도 됩니다.

MySQL DB에서 스키마 mymulti 로 선택해서 DB 만들어줍니다.

저는 path 설정을 해줘서 이렇게 cd C:\Java\mysql_zipcode로 들어가는 것입니다. 사실 dir/w도 해줘야 되는데 생략했네요

 

MySQL 접속방법은 두가지가 있다고 합니다

일반계정으로 접속

1)c:\mysql>bin\mysql -u board_user -p board_db    //윈도우
1)cd /usr/local/mysql                                               //리눅스
   ./bin/mysql -u board_user -p board_db
2)비밀번호 입력
3)mysql>

그니까 전 윈도우니까 mysql -u root -p mysql 이렇게 친겁니다...

리눅스는 생각보다 복잡하거든 여러분의 능력에 맡기겠습니다.

비번은 manager2를 쳤습니다... 처음에 설정하신 비밀번호입니다.

MySQL DB 보기

1)mysql>show databases;

사용할 DB 선택

1)mysql>use board_db

databases 는 스키마들을 의미하는것 같습니다.

mymulti 스키마를 선택하고.. 여러분이 만약 myjava로 만들었다면 use myjava 로 해주셔야합니다.

이제 DB에 넣어줄 차례입니다.

테이블안에 데이터 입력

1)mysql>insert into board_ta (number, name) values (1, 'mbk2000');
또는
1)mysql>insert into board_ta (number, name, address, wdate, wtime)
              values (2, 'mbk2','kyunggi','2001-04-05', '10:20:22');

또는
1)메모장을 이용하여 mbk.txt 라는 데이터 파일을 tab으로 구분하여 만든다.
2)mbk.txt 파일을 DB와 같은 위치에 이동시킨다.
   cp mbk.txt /usr/local/mysql/data/board_db/
3)load data local infile "mbk.txt" into table board_ta;
또는
1)메모장을 이용하여 mbk.txt 라는 데이터 파일을 comma(,)로 구분하여 만든다.
2)mbk.txt 파일을 DB와 같은 위치에 이동시킨다.
   cp mbk.txt /usr/local/mysql/data/board_db/
3)load data local infile "mbk.txt" into table board_ta
   fields terminated by ',';

저는 이것을 참고해서 이미 폴더내(디렉토리)에 들어와있기 때문에

load data local infile "zipcode_20120126.txt" into table zipcode;

이렇게 치면 query ok DB에 들어가집니다.

최대 1000개의 레코드를 반환하기 때문에 다음과 같이 이 레코드만 나오는 걸 알 수 있습니다.

실제 DB에 들어간 레코드는 51,925개라고 합니다. 어쨌든 우리나라 주소가 다음과 같습니다... 제가 이렇게 했다면 여러분도 다른 것도 할 수 있을 것 같습니다. 혹시 몰라 파일도 올려봅니다.

mysql_zipcode.zip

엑셀 파일로 저장해서 올리는 방법도 있는데 oracle에서 그렇게 했는데 일단 txt 방법도 있다는 것 참고하시면 되겠습니다.