LoginSignup
11
11

More than 5 years have passed since last update.

郵便局が配布している郵便番号データCSVをそのままMySQLに取り込むには

Last updated at Posted at 2013-08-13

自前で郵便番号から住所を引っ張ってくる画面やなんかを作る時に、ちょいちょい更新される郵便番号CSVを自動的に取り込みたい。

簡単なのは以下が前提

  • 郵便局の郵便番号データダウンロードページからCSVをダウンロード
  • mysqlのcharsetはUTF-8
  • mysqlに作った郵便番号テーブルの項目は、CSVと合わせてある
  • ダウンロードしたファイルは以下においてある
HOGEHOGE/ken_all_utf8.csv

コマンドラインでmysqlにつないで以下のSQLを実行

mysql> LOAD DATA LOCAL INFILE 'HOGEHOGE/ken_all_utf8.csv'
    INTO TABLE PUB_ZIPCODE
FIELDS
      TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"'
    ESCAPED BY ''
LINES
    STARTING BY ''
    TERMINATED BY '\r\n'
;

番外編

テーブルにID(auto_increment)カラムなんかをつけている場合は、流し込むカラムを指定してあげればよい。

例えば以下の場合は、先頭にID(auto_increment)カラムがついてる場合。自動的に採番されます。

mysql> LOAD DATA LOCAL INFILE 'HOGEHOGE/ken_all_utf8.csv'
    INTO TABLE PUB_ZIPCODE
FIELDS
      TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"'
    ESCAPED BY ''
LINES
    STARTING BY ''
    TERMINATED BY '\r\n'
(JIS_X0401_X0402,OLD_ZIPCODE,ZIPCODE,PREF_KANA,CITY_KANA,TOWN_KANA,PREF,CITY,TOWN,FLAG1,FLAG2,FLAG3,FLAG4,FLAG5,FLAG6)
;

LOAD DATAしてwarning等で全件入らなかった場合は、以下のSQLでwarning内容がわかります

mysql> show warnings;
11
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11