by shigemk2

当面は技術的なことしか書かない

郵便番号のデータをMySQLにぶっこむ

MySQLのデータサンプルとして郵便番号のデータを入れる - kenjiskywalker no memo

データのダウンロード

$ wget http://www.post.japanpost.jp/zipcode/dl/kogaki/lzh/ken_all.lzh

lzhファイルを解凍するためにはlhaコマンドが必要なの。

$ brew install lha
$ lha x ken_all.lzh

Shift JISなのでUTF-8に変換するの。

$ nkf -g ken_all.csv 
Shift_JIS (CR)
$ nkf -w --overwrite ken_all.csv
$ nkf -g ken_all.csv
UTF-8 (CR)

DBを作ってテーブルを作る

mysql> CREATE DATABASE yuubin CHARACTER SET utf8; 
mysql> use yuubin;
mysql> CREATE TABLE zipcode (
PublicCode char(5) NOT NULL,
OldZipCode char(5) NOT NULL,
ZipCode char(7) NOT NULL,
PrefectureKana varchar(10),
CityKana varchar(100),
TownKana varchar(100),
Prefecture varchar(10),
City varchar(200),
Town varchar(200),
TownDivideFlg tinyint(1),
KoazaBanchiFlg tinyint(1),
TyoumeFlg tinyint(1),
HasSomeTownFlg tinyint(1),
UpdateState tinyint(1),
UpdateReson tinyint(1),
PRIMARY KEY (ZipCode)
);

mysql> LOAD DATA INFILE '/path/to/ken_all.csv' IGNORE INTO TABLE zipcode FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"';

なお、DBのサイズを知るには

select table_schema, sum(data_length+index_length) /1024 /1024 as MB from information_schema.tables group by table_schema order by sum(data_length+index_length) desc;

[http://d.hatena.ne.jp/sho-yamasaki/20120405/1333640589:title]