/ 企画開発部
Tweet
シェア
システム開発ブログ
最近の記事
- Chrome for Androidの新機能、Chrome to Mobileを試す
- ファイルサーバのBCP対策(アイロベックスの場合)
- Illustratorの矢印機能でラクラク矢印作成!
- システム会社選びのポイント
- システム保守の移管費用を抑えます
- アイロベックス通信発行してます
- ボタンのデザインをxmlで定義する
- Excel2010で行コピーをした場合に、画像ファイルのサイズが変わらないようにする
- Power Point2010 でスライド番号をつける方法
- Photoshop の秘宝
カテゴリー
- HTML全般 (2)
- Access (15)
- Android (5)
- .NET (14)
- Excel (9)
- Google Apps (5)
- HTML5 (3)
- iPhone (8)
- JAVA (14)
- Linux (7)
- Movable Type (15)
- MySQL (7)
- OpenOffice (10)
- Oracle (6)
- PHP (20)
- SQLServer (4)
- twitter (6)
- VBA (11)
- Webサイト構築・Web戦略 (32)
- Webサイト構築事例 (4)
- Windows (10)
- その他 (29)
- アクセス解析 (2)
- ウィジェット (1)
- システム設計 (5)
- システム開発事例 (3)
- システム開発体制 (1)
- セキュリティ (5)
- データベース (20)
- プロジェクト管理 (8)
- 品質管理・テスト (6)
- 帳票 (3)
- 技術活用 (6)
- 運用・保守 (8)
部署
- システム開発事業部 (33)
- ビジネスソリューション課 (17)
- システムソリューション事業部 (32)
- 流通システム部 (76)
- 産業システム部 (93)
- ソフトウエア開発部 (56)
- Webコンサルティング部 (97)
- 企画開発部 (37)
- 部長インタビュー (3)
月別アーカイブ
- 2012年2月 (6)
- 2012年1月 (18)
- 2011年12月 (19)
- 2011年11月 (22)
- 2011年10月 (29)
- 2011年9月 (28)
- 2011年8月 (5)
- 2011年7月 (18)
- 2011年6月 (15)
- 2011年5月 (21)
- 2011年4月 (8)
- 2011年3月 (12)
- 2011年2月 (12)
- 2011年1月 (13)
- 2010年12月 (18)
- 2010年11月 (19)
- 2010年10月 (19)
- 2010年9月 (21)
- 2010年8月 (17)
- 2010年7月 (21)
- 2010年6月 (22)
- 2010年5月 (14)
- 2010年4月 (12)
- 2010年3月 (13)
- 2010年2月 (9)
- 2010年1月 (12)
- 2009年12月 (7)
- 2009年11月 (6)
- 2009年10月 (8)
- 2009年9月 (7)
- 2009年8月 (3)
- 2009年7月 (1)
- 2009年6月 (3)
- 2009年5月 (1)
- 2009年4月 (1)
- 2009年3月 (8)
- 2009年2月 (10)
- 2009年1月 (1)
- 2008年12月 (1)






企画開発部 / Linux / MySQL
システムで郵便番号を入力すると、自動で住所を表示してくれるようなものがよくあると思います。
そのようなシステムを構築した際にやらなければいけないのが、
システムに入っている郵便番号データを更新しなければいけないことです。
市区町村の合併などにより毎月郵便番号のデータが更新されるため、
毎月の更新作業が必要になります。
始めは手動でCSVをダウンロードして、インポート作業を行うと思いますが、
それが毎月の作業となると、体制がしっかりしていない場合に作業漏れ等が発生してしまいます。
自動でダウンロードから取り込み処理まで行って、取り込みしたことだけをメールで
知らせてくれたらいいのに と思ったので、作ってみました。
今回作成したサンプルは、以下の環境を想定しております。
OS: Linux (CentOS5.4で検証済み)
DB: MySQL (MySQL5.1で検証済み)
シェル: bash
なお、ローカルファイルをDBにインポートする処理を行いますので、
取り込み処理を行うユーザーには、FILE権限を付ける必要がありますのでご注意ください。
では、実際のコードについて説明します。
まず、日本郵便のサイトからwgetコマンドを使用してCSVファイルをダウンロードします。
lzh形式で圧縮されているため、lhaコマンドで解凍します。
以下のようなエラーが出た場合には、lhaコマンドがインストールされていないため、
インストールする必要があります。
CentOSを使用していてyumでインストールしたい場合は、 dagのリポジトリからインストールすることになります。
まだ、dagのリポジトリを利用する設定をされていない場合は、 http://dag.wieers.com/rpm/FAQ.php#B のサイトより
お使いのサーバ環境の設定を行ってください。
今回私は、CentOS5.4 32bitを使用しているので、
rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm を実行しました。
以下のような表示になれば、正常に設定できたことになります。
警告: /var/tmp/rpm-xfer.Ep6Wp1: ヘッダ V3 DSA signature: NOKEY, key ID 6b8d79e6
準備中... ########################################### [100%]
1:rpmforge-release ########################################### [100%]
その後、yum install lha を実行してインストールを行い、 lha解凍を行います。
ken_all.csv - Melted : ooooooooooooooooooooooooooooooooooooooooooooooooooooo
ken_all.csvの文字コードはShift_JISになっていますので、DBで使用している
文字コードがShift_JISでない場合には、CSVファイルの文字コード変換を行う必要があります。
文字コード変換コマンドの詳しい説明は、 Linuxで簡単に文字コード変換するをご覧ください。
今回は、DBの文字コードがUTF-8なのでShift_JISからUTF-8にファイルの文字コードを変換します。
UTF-8に変換されたファイルが、ken_all_utf8.csv として出力されます。
この後は、ファイルをDBにインポートします。
mysqlのコンソールにログインし、使用するDBを選択後以下のクエリを使って一時テーブルに流し込みます。
取り込みが完了したら、実際にシステムで使用しているテーブルに合うように
取り込みを行えば全て完了となります。
これらの作業をざっと一連のスクリプトにしましたので、参考にしてみてください。
今回説明した自動でダウンロードする方法と、サーバからインターネットに接続できない場合にlzhファイルを自分でアップロードする方法をモードで切り替えられるようにしてみました。
サンプルスクリプト
「システム開発ブログ」へのコメントやご意見等ありましたら、ファンページまでお願いします。 Facebook のファンページ
他社のシステムも直します。資産を活かしてシステムリフォーム