본문 바로가기

데이타베이스/MySQL

우편번호 MySQL DB에 집어넣기

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

  제가 티스토리로 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 방법도 있다는 것 참고하시면 되겠습니다.