LoginSignup
3
3

More than 5 years have passed since last update.

[CentOS7.2+Postgresql9.6]郵便番号データベースを自前で用意する。(簡易版)

Last updated at Posted at 2016-10-13

概要

単純に郵便番号のデータベースを手元に作る。(無加工)

こんな人向け

・郵便番号データベースを自前で用意したい。
・自動でデータを更新させたい。
・時間をかけずに作りたい。

郵便番号のデータベースを用意する

DB構築
PostgreSQL9.6構築手順はこっちを参照

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

あとは適当なアプリで利用したり加工したりして使う。

おしまい。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3