ブログを作る※無料・簡単アフィリ    ブログトップ | 楽天市場
425905 ランダム
MySQLへ郵便番号データをインポー… (パソコン・家電)楽天ブログ 【ケータイで見る】 【ログイン】
Fuzyのプログラミング(?)メモ
ホーム 日記 プロフィール オークション 掲示板 ブックマーク お買い物一覧
Fuzyの日記

<< 前へ次へ >>一覧

December 11, 2005 楽天プロフィール Add to Google XML

MySQLへ郵便番号データをインポートする
[ カテゴリ未分類 ]    

じーちゃんクリスマスバージョンMySQLへCSVをインポートする方法です。

CSVとは、Comma Separated Values の略で、データをカンマ(,)で区切って並べたテキストファイルを指します。Excelなんかでも、[名前を付けて保存]のときに、CSV形式を選べたりしますね。もちろん、Access等のデータベースでもCSV出力は対応していますし、こういった異なるアプリケーション間で、データを移行する際に、CSV形式は頻繁に使われるのです。


■CSVの例
0640941,"北海道","札幌市中央区","旭ケ丘"
0600041,"北海道","札幌市中央区","大通東"
0600042,"北海道","札幌市中央区","大通西(1~19丁目)"
0640820,"北海道","札幌市中央区","大通西(20~28丁目)"
0600031,"北海道","札幌市中央区","北一条東"

今回は、こういったCSV形式のファイルを、MySQLデータベースへインポート(取り込む)します。元となるCSVファイルは、郵便番号データを使います。この郵便番号データは、郵便局のホームページから自由にダウンロードして使うことができます。Webサイトの登録フォーム等で、郵便番号を入力して[検索]ボタンを押すと、ある程度の住所が自動的に入力される仕組みを目にしたことはありませんか? ああいう仕組みも、この郵便番号データを使って実現されているのです。

郵便番号のCSVはこちら→http://www.post.japanpost.jp/zipcode/dl/kogaki.html

ところで、お使いのMySQLは、Shift-JIS設定ですか? EUC-JP設定ですか?
郵便局のページからダウンロードできるCSVファイルは、Shift-JISで保存されています。そのため、もし、お使いのMySQLのデフォルト文字コードがShift-JIS以外の場合は、あらかじめCSVファイルの文字コードを変換してあげる必要があります。PHPでも、Shift-JISからEUC-JP等、文字コードの変換を行える mb_convert_kana という関数があります。これについては、別の機会に解説するので、とりあえず、フリーソフトとか、お使いのテキストエディタで、CSVファイルの文字コードを適切に変換してください。
■半角カナについて
余談ですが、「テキストエディタでEUC-JPでの保存はできるけど、半角カナから全角カナへ変換する方法がわからない」方もご安心ください。EUC-JPでも半角カナは適切に処理されますので、無理に全角カナにする必要はありません。半角カナが処理できないのは、インターネットメールでよく使われる ISO-2022-JP です。ですから、お使いのMySQLがEUC-JP設定でも半角カナは使えます。
参考資料:半角カナは機種依存文字か?

さて、KEN_ALL.CSV(郵便番号データのCSVファイル)を適切な文字コードへ変換できましたでしょうか。変換が終わりましたら、今度は、FTPソフト等で、CSVファイルをWebサイトへアップロードしてください。

アップロードが終わりましたら、早速インポート…と言いたいところですが、その前に、CSVファイルのデータを格納するMySQLのテーブルを作成しておかなければなりません。郵便番号データは横列が15列のデータですので、15個の列を持つテーブルを作ってあげます。phpMyAdminで、次のSQL文を実行してください。テーブルを作成するSQL文です。

CREATE TABLE sample_zip (
    jis        varchar(10)  NULL,
    zip_old    varchar(5)   NULL,
    zip        varchar(7)   NULL,
    addr1_kana varchar(100) NULL,
    addr2_kana varchar(100) NULL,
    addr3_kana varchar(100) NULL,
    addr1      varchar(100) NULL,
    addr2      varchar(100) NULL,
    addr3      varchar(100) NULL,
    c1         int          NULL,
    c2         int          NULL,
    c3         int          NULL,
    c4         int          NULL,
    c5         int          NULL,
    c6         int          NULL
)


sample_zipテーブルの作成が完了しましたら、いよいよインポートです。MySQLには、LOAD DATA という便利なインポート用の構文が用意されています。この構文はMySQL専用なので、他のSQLデータベースでは使えないのが残念ですが、簡単な構文ですから、覚えてしまいましょう。

LOAD DATA LOCAL INFILE '/path/KEN_ALL.CSV'
INTO TABLE `sample_zip`
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'


はい。これを実行するだけで完了です。注意点としては、INFILE '/path/KEN_ALL.CSV' の部分でしょうか。お使いのWebサーバーによって、KEN_ALL.CSVをアップロードするパスが様々だと思いますので、パスを間違えないように書いてあげる必要があります。

ちなみに、FIELDS TERMINATED BY ',' は、フィールド(列)がカンマ(,)で区切られていますよ、という意味で、OPTIONALLY ENCLOSED BY '"' は、データがダブルクォート(")で囲まれている場合がありますよ、という意味です。

本当は、インポートしただけでは面白くないですよね。せっかく郵便番号テーブルが出来たのだから、検索もしたい。ですが、予想どおり、記事が長くなりましたので、今日のところはここまで!

関連リンク
住所の郵便番号のダウンロードサービス
ここから郵便番号データ(CSV形式)をダウンロードすることが出来ます。ちなみに、全国一括ダウンロードでも、1.7MB程度です。



記事がお役にたちましたら、ポチっとお願いします m(_ _)m → BlogRanking



Last updated  December 11, 2005 18:43:24





<< 前へ次へ >>一覧一番上に戻る


PR

Calendar

November 2011
SMTWTFS
  12345
6789101112
13141516171819
20212223242526
27282930   
<一覧へthis monthnext>

Keyword Search

Favorite Blog

祝北米PSPDLゲー… New!たむてぃむさん

それからの三国志 … New!Tarotaroさん

プラズマクラスタ… か ず さ かさん

仕事の仕方:他人…Kanshi Dimuさん

現金書留の実在に…しゅう206さん

Category

Archives

Mobile

>>ケータイに
このブログの
URLを送信!

 

Powered By 楽天ブログは国内最大級の無料ブログサービスです。楽天・Infoseekと連動した豊富なコンテンツや簡単アフィリエイト機能、フォトアルバムも使えます。デザインも豊富・簡単カスタマイズが可能!

Copyright (c) 1997-2012 Rakuten, Inc. All Rights Reserved.