|
|
|
|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
│<< 前へ │次へ >> │一覧 |
MySQLへCSVをインポートする方法です。CSVとは、Comma Separated Values の略で、データをカンマ(,)で区切って並べたテキストファイルを指します。Excelなんかでも、[名前を付けて保存]のときに、CSV形式を選べたりしますね。もちろん、Access等のデータベースでもCSV出力は対応していますし、こういった異なるアプリケーション間で、データを移行する際に、CSV形式は頻繁に使われるのです。 ■CSVの例今回は、こういった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文です。 sample_zipテーブルの作成が完了しましたら、いよいよインポートです。MySQLには、LOAD DATA という便利なインポート用の構文が用意されています。この構文はMySQL専用なので、他のSQLデータベースでは使えないのが残念ですが、簡単な構文ですから、覚えてしまいましょう。 はい。これを実行するだけで完了です。注意点としては、INFILE '/path/KEN_ALL.CSV' の部分でしょうか。お使いのWebサーバーによって、KEN_ALL.CSVをアップロードするパスが様々だと思いますので、パスを間違えないように書いてあげる必要があります。 ちなみに、FIELDS TERMINATED BY ',' は、フィールド(列)がカンマ(,)で区切られていますよ、という意味で、OPTIONALLY ENCLOSED BY '"' は、データがダブルクォート(")で囲まれている場合がありますよ、という意味です。 本当は、インポートしただけでは面白くないですよね。せっかく郵便番号テーブルが出来たのだから、検索もしたい。ですが、予想どおり、記事が長くなりましたので、今日のところはここまで! 関連リンク 住所の郵便番号のダウンロードサービスここから郵便番号データ(CSV形式)をダウンロードすることが出来ます。ちなみに、全国一括ダウンロードでも、1.7MB程度です。 記事がお役にたちましたら、ポチっとお願いします m(_ _)m →
Last updated
December 11, 2005 18:43:24
│<< 前へ │次へ >> │一覧 │ 一番上に戻る │ |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||