自前で郵便番号から住所を引っ張ってくる画面やなんかを作る時に、ちょいちょい更新される郵便番号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;