概要
単純に郵便番号のデータベースを手元に作る。(無加工)
こんな人向け
・郵便番号データベースを自前で用意したい。
・自動でデータを更新させたい。
・時間をかけずに作りたい。
郵便番号のデータベースを用意する
DB設定変更
sudo vim /var/lib/pgsql/9.6/data/pg_hba.conf
#local all all peer
local all all trust
即席かつ自分でしか利用しないのでtrustにしてます。。必要に応じて変えてください。
DB再起動
sudo systemctl restart postgresql-9.6
postgresqlユーザのパスワード設定と郵便番号DB作成
sudo -u postgres psql postgres
# alter user postgres WITH PASSWORD 'password';
# create database zipcd;
# \q
郵便番号ユーザ作成
sudo createuser -a -d -U postgres -P zipuser
新しいロールのためのパスワード:
もう一度入力してください:
パスワード:
郵便番号テーブル作成
psql -U zipuser zipcd -p;
# create table zipcdmst (
govcd char(5),
zipcd_old char(5),
zipcd char(7),
pref_kana varchar,
city_kana varchar,
town_kana varchar,
pref varchar,
city varchar,
town varchar,
flg_n1 boolean,
flg_kaza boolean,
flg_chome boolean,
flg_1n boolean,
upd_stat smallint,
upd_reason smallint
);
CREATE TABLE
# \q
データ更新スクリプト作成
必要なものをインストール
sudo yum install -y unzip
sudo yum install -y nkf
スクリプト作成
sudo vim /usr/local/bin/update_zipcd.sh
update_zipcd.sh
#!/bin/sh
echo `date "+[%Y/%m/%d %H:%M:%S]"`"** START! update zipcd **"
psql -U zipuser -d zipcd -c "truncate table zipcdmst;"
cd /tmp
wget http://www.post.japanpost.jp/zipcode/dl/kogaki/zip/ken_all.zip
unzip ken_all.zip
nkf -Sw KEN_ALL.CSV > KEN_ALL_UTF8.CSV
rm ken_all.zip
rm KEN_ALL.CSV
psql -U zipuser -d zipcd -c "copy zipcdmst from '/tmp/KEN_ALL_UTF8.CSV' WITH CSV;"
rm /tmp/KEN_ALL_UTF8.CSV
echo `date "+[%Y/%m/%d %H:%M:%S]"`"** FINISH! update zipcd **"
実行権限付与
chmod +x /usr/local/bin/update_zipcd.sh
プロキシサーバを通している場合は次を設定
sudo vim /etc/wgetrc
http_proxy = http://プロキシのIP:ポート/
https_proxy = http://プロキシのIP:ポート/
自動更新設定
毎月1日に実行して更新する。(差分更新とかめんどくさい事はしない)
sudo crontab -u root -e
0 3 1 * * /usr/local/bin/update_zipcd.sh >> /var/log/zip_upd.log
あとは適当なアプリで利用したり加工したりして使う。
おしまい。