読者です 読者をやめる 読者になる 読者になる

プログラマでありたい

おっさんになっても、プログラマでありつづけたい

mysqlに郵政省の郵便番号データを取り込む

RDB

果てしなくどうでもよいメモ。データの取り込みの部分で詰まったのでメモ

テーブル定義。(主キーやキーなし)

drop table postal;
create table postal(
 jiscode char(5),
 postcode_short varchar(5),
 postcode char(7),
 pref_kana varchar(200),
 city_kana varchar(200),
 town_kana varchar(200),
 pref_kanji varchar(200),
 city_kanji varchar(200),
 town_kanji varchar(200),
 flag1 smallint,
 flag2 smallint,
 flag3 smallint,
 flag4 smallint,
 flag5 smallint,
 flag6 smallint
);

UTF-8に変換

nkf -xw --overwrite KEN_ALL.CSV

デフォルトだと半角カナが全角カナに変換されてしまうので、xオプションをお忘れなく

インポート

mysql> load data infile "/home/hoge/data/KEN_ALL.CSV"
    -> into table postal fields terminated by "," enclosed by '"';

ERROR 13 (HY000): Can't get stat of '/home/hoge/data/KEN_ALL.CSV' (Errcode: 13)

よく解らないエラーが出ます。ディレクトリの権限を777にすると動くようです。
ここにハマり15分くらい悩みました。

郵便番号データの各項目は、ダブルクォートで囲まれているので、enclosed by '"'を付けること