郵便番号をSqlite3でデータベースにしてみた

※この記事は昔書いたブログページの削除に伴い、避難させてきた記事です。

郵便番号をSqlite3でデータベースにしてみました。


作成するにあたって以下のサイトを参考にさせて頂きました。ありがとうございます。

環境:
 ハードウェア:raspberryPI3 model B
   OS:Raspbian1.4

作ってみる

まず郵便番号のcsvファイルを日本郵便のサイトから拾ってきます。

ちなみに私は促音・拗音を小書きで表記しないものを拾ってきました。

拾ってきたcsvファイルのフォーマットはshift-jisのためターミナルやデータベースにデータを格納する際に文字化けを起こす場合があります。(というかほぼ起こります)

そのためフォーマットをutf-8にするためをExcelでutf-8に出力しなおします。

適当なディレクトリを作成します。
~$ mkdir Postnumbers

作成されているか確認します。
~$ ls
Postnumbers

ディレクトリに移動します。
~$ cd ./Postnumbers

utf-8にすることができたファイルを作成したディレクトリに何らかの方法でぶちこみます。

いよいよお待ちかねのSqlite3です。
名前は適当です。
~/Postnumbers $ sqlite3 address.db

ターミナルに以下のコマンドを入力しテーブルを作成します。
sqlite> CREATE TABLE addressOOGAKI(number, firstaddress, address, region1, region2, region3, regionK1, regionK2, regionK3, id0, id1, id2, id3, id4, id5);

OOGAKIは大書きっていうことで決して変な意味ではないです。

入力したら正しくできているか確認しましょう。

sqlite> .schema
CREATE TABLE addressOOGAKI(number, firstaddress, address, region1, region2, region3, regionK1, regionK2, regionK3, id0, id1, id2, id3, id4, id5);

Sqlite3から切断します。
sqlite> .exit

そうしたら先ほどのutf-8に出力したcsvファイルをデータベースに入れていきます。
~/Postnumbers $ sqlite3 -separator , address.db ".import KEN_ALL.csv addressOOGAKI"

ワーっとログが流れて行ってログが止まります。

またsqlite3に接続します。
~/Postnumbers $ sqlite3 address.db

本当にデータベースに書き込めているのか確認します。
sqlite> SELECT * FROM addressOOGAKI;

成功していたら大量の文字が流れて行きます。

検索してみる

実際に住所を探せなければ意味がない(?)ため検索してみます。

sqlite3に接続します。
~/Postnumbers $ sqlite3 address.db

適当な単語を検索します。
検索条件:ハルから始まる単語すべて
sqlite> SELECT * FROM addressOOGAKI WHERE region3 LIKE 'ハル%';
1203|4702|470265|ホツカイドウ|オタルシ|ハルカチヨウ|北海道|小樽市|春香町|0|0|0|0|0|0
1206|85|850813|ホツカイドウ|クシロシ|ハルトリ|北海道|釧路市|春採|0|0|1|0|0|0
1213|5913|591374|ホツカイドウ|トマコマイシ|ハルミチヨウ(1-42バンチ)|北海道|苫小牧市|晴海町(1~42番地)|1|0|0|0|0|0
........

ワーっと出てきたと思います。

気が向いたら郵便番号を検索できるwebページを作ってみようかと思います。

おまけ

アメリカにも郵便番号のようなものがあり(ZIP CODE)、これもデータベースにしてみると面白いと思います。
↓↓↓↓↓



コメント

このブログの人気の投稿

DockerのNextcloudでエラーが出た SQLSTATE[08006] [7]

Arduinoで電流を測定する