SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

【MySQL】ある郵便番号データ取り込みの風景

とある郵便番号データ取り込みのメモです。

CSVをダウンロードしてくる

郵政公社からいただいてくる。
http://www.post.japanpost.jp/zipcode/download.html

全国のCSVと、事業所のCSVをダウンロードして、解凍する。

CSVデータをちょっと加工する(文字コード変更)

MySQLのcharacter_set_databaseに合わせる。

UTF-8などに変換する。

エディタを使うなり、nkfなどのコマンドを使うなりする。

テーブルを作る

いろいろ気になるカラム名、意味の分からないカラム名があるけど、私のせいじゃないので気にしないことにする。

CREATE TABLE `m_yubin` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `code` varchar(5) NOT NULL,
  `ken_code` tinyint(4) NOT NULL,
  `no5` varchar(5) NOT NULL,
  `no` varchar(7) NOT NULL,
  `ken_k` varchar(20) NOT NULL,
  `shi_k` varchar(50) NOT NULL,
  `cho_k` varchar(100) NOT NULL,
  `ken` varchar(20) NOT NULL,
  `shi` varchar(50) NOT NULL,
  `cho` varchar(100) NOT NULL,
  `banchi` varchar(100) NOT NULL,
  `shiten` varchar(50) NOT NULL,
  `jigyosho_k` varchar(100) NOT NULL,
  `jigyosho` varchar(100) NOT NULL,
  `f10` tinyint(4) NOT NULL,
  `f11` tinyint(4) NOT NULL,
  `f12` tinyint(4) NOT NULL,
  `f13` tinyint(4) NOT NULL,
  `f14` tinyint(4) NOT NULL,
  `f15` tinyint(4) NOT NULL,
  `fj11` tinyint(4) NOT NULL,
  `fj12` tinyint(4) NOT NULL,
  `fj13` tinyint(4) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `no` (`no`),
  KEY `ken` (`ken`)
);

全国の郵便番号取り込み

load data infile "/tmp/KEN_ALL.txt"
into table m_yubin
FIELDS
    TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"'
    ESCAPED BY ''
LINES
    STARTING BY ''
    TERMINATED BY '\r\n'
IGNORE 0 LINES
(`code`,no5,`no`,ken_k,shi_k,cho_k,ken,shi,cho,f10,f11,f12,f13,f14,f15);

事業所の郵便番号取り込み

load data infile "/tmp/JIGYOSYO.txt"
into table m_yubin
FIELDS
    TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"'
    ESCAPED BY ''
LINES
    STARTING BY ''
    TERMINATED BY '\r\n'
IGNORE 0 LINES
(`code`,jigyosho_k,jigyosho,ken,shi,cho,banchi,`no`,no5,shiten,fj11,fj12,fj13);

県コード対応

自治体コードの上2桁をもらってくる。使用頻度が高い場合はあると便利。

update m_yubin set ken_code = substring(code,1,2);

以上!

関連するメモ

コメント