EC-CUBEの郵便番号データのアップデートは、結構面倒
よく見る対応方法としては、
- 郵便局のサイトから、http://www.post.japanpost.jp/zipcode/dl/kogaki.htmlをダウンロード
- LHAコマンドで解凍
- KEN_ALL.CSVを文字の置き換えのできるテキストエディタ(秀丸など)で開き、半角カタカナを全角カタカナに、「~」を「-」に置換
- UTF-8形式で保存します。
- FTPでWEBサーバーへ接続し、/data /downloads/KEN_ALL.CSVを先ほど変換したCSVで上書きしておきます。
- 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 ‘”‘;
——————————-