EC-CUBEの郵便番号データを自動的に更新するスクリプト

EC-CUBEの郵便番号データのアップデートは、結構面倒
よく見る対応方法としては、

  1. 郵便局のサイトから、http://www.post.japanpost.jp/zipcode/dl/kogaki.htmlをダウンロード
  2. LHAコマンドで解凍
  3. KEN_ALL.CSVを文字の置き換えのできるテキストエディタ(秀丸など)で開き、半角カタカナを全角カタカナに、「~」を「-」に置換
  4. UTF-8形式で保存します。
  5. FTPでWEBサーバーへ接続し、/data /downloads/KEN_ALL.CSVを先ほど変換したCSVで上書きしておきます。
  6. EC-CUBEの管理画面>基本情報管理から郵便番号DB登録 をやり直します。

って感じですが、定期的なメンテナンスでは忘れるし作業がめんどくさいので、
以下の方法でcronを使って定期的に自動実行する。
速いマシンなら5秒程度で完了します。

————————————————————
#!/bin/sh
TDAY=`date +%Y%m%d`
TARGET_DB=eccube_db
DB_BACKUP_DIR=/your/backup/dir
TARGET_DIR=/your/backup/script/dir

#ディレクトリ移動
cd $TARGET_DIR

#郵便番号データダウンロード
wget http://www.post.japanpost.jp/zipcode/dl/kogaki/lzh/ken_all.lzh -O $TARGET_DIR/ken_all.lzh

#解凍
/usr/bin/lha -xw=$TARGET_DIR/ $TARGET_DIR/ken_all.lzh

#文字コード変換
#EUCへ変換する場合
#nkf -Lue $TARGET_DIR/ken_all.csv > $TARGET_DIR/ken_all_eccube.csv

#UTF-8へ変換する場合
nkf -Luw $TARGET_DIR/ken_all.csv > $TARGET_DIR/ken_all_enc.csv

#バックアップ
mysqldump -u root –default-character-set=binary $TARGET_DB > $DB_BACKUP_DIR/$TARGET_DB$TDAY.sql

#郵便番号コードアップデート
mysql -u root $TARGET_DB < $TARGET_DIR/zip_update.sql

#郵便番号データ削除
rm $TARGET_DIR/ken_all.lzh
rm $TARGET_DIR/ken_all.csv
rm $TARGET_DIR/ken_all_enc.csv
————————————————————

zip_update.sqlは

——————————-
TRUNCATE table `mtb_zip`;
load data local infile “./ken_all_enc.csv” into table mtb_zip fields terminated by ‘,’ ENCLOSED BY ‘”‘;
——————————-

EC-CUBEの郵便番号データを自動的に更新するスクリプト