Home Top About Help Login Search

郵便番号のテーブルを作成する

ID: 7
creation date: 2009/09/29 16:01
modification date: 2009/09/29 16:01
owner: naoto5959
tags: php,cakePHP

郵便番号を入れると住所が補完される処理の準備のために、郵便局のサイトから自動で郵便番号データをインポートしてみようと思うわけですが、.lzhが解凍できなくてしょんぼり。

yumでlhaをインストールする。

yumでインストールするには、普通のレポジトリにはないので

# yum --enablerepo=rpmforge install lha

とすればOK。もちろんrpmforgeの設定を以下のようにしておくこと。

cat /etc/yum.repos.d/rpmforge.repo
# Name: RPMforge RPM Repository for Red Hat Enterprise 5 - dag
# URL: http://rpmforge.net/
[rpmforge]
name = Red Hat Enterprise $releasever - RPMforge.net - dag
#baseurl = http://apt.sw.be/redhat/el5/en/$basearch/dag
mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 0
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

データを見てみる

以下のように、さっそくダサいわけで。(元のデータが悪い)

mysql> select * from punch1_zips limit 10;
+---------+---------------+--------------------+-----------------------------------------+
| id      | prefecture_id | city               | town                                    |
+---------+---------------+--------------------+-----------------------------------------+
| 0600000 |             1 | 札幌市中央区       | 以下に掲載がない場合                    |
| 0640941 |             1 | 札幌市中央区       | 旭ケ丘                                  |
| 0600041 |             1 | 札幌市中央区       | 大通東                                  |
| 0600042 |             1 | 札幌市中央区       | 大通西(1〜19丁目)                  |
| 0640820 |             1 | 札幌市中央区       | 大通西(20〜28丁目)                |
| 0600031 |             1 | 札幌市中央区       | 北一条東                                |
| 0600001 |             1 | 札幌市中央区       | 北一条西(1〜19丁目)                |
| 0640821 |             1 | 札幌市中央区       | 北一条西(20〜28丁目)              |
| 0600032 |             1 | 札幌市中央区       | 北二条東                                |
| 0600002 |             1 | 札幌市中央区       | 北二条西(1〜19丁目)                |
+---------+---------------+--------------------+-----------------------------------------+
10 rows in set (0.00 sec)

要らないデータは空白にする

「以下に掲載がない場合」ってのは消す。それにしても「以下」ってねぇ。。。

UPDATE punch1_zips set town=""
 WHERE town = "以下に掲載がない場合";

これで、郵便番号と住所の変換テーブル出来上がり。

インデックス張っておく

よく考えたら、郵便番号から検索するのにインデックスがない。

CREATE INDEX idx_id ON punch1_zips(id);

これでOK。

0 comments
: