金子邦彦研究室インストール日本郵政の「郵便番号データ」を SQLite 3 で使う郵便番号 CSV データを SQLite 3 にインポート(SQLite 3 を使用)

郵便番号 CSV データを SQLite 3 にインポート(SQLite 3 を使用)

このページでは,日本郵政「ゆうびんホームページ」で公開されている 2つの郵便番号データのCSV(カンマ区切り値)形式ファイルを使う.

  1. 住所の郵便番号(CSV形式)(ken_all.csv)
  2. 事業所の個別郵便番号(CSV形式)(jigyosyo.csv)

これらのファイルを,リレーショナルデータベース管理システム SQLite 3 のテーブル(テーブル名は ken_all)に格納します.

SQLite 3 について: 別ページ »にまとめ

謝辞:

・郵便番号データについて、日本郵政に感謝します

1. 前準備

Python の準備(Windows,Ubuntu 上)

サイト内の関連ページ

関連する外部ページ

Python の公式ページ: https://www.python.org/

csvkit のインストール

SQLite 3 のインストール

SQLite 3は,リレーショナルデータベース管理システム

郵便番号 CSV データの準備

郵便番号 CSV データから,SQLite 3 データベースを生成 (csvsql, sqlite3 を使用)

  1. まず,2つのファイルの文字コードは,UTF-8 に変換しておく
  2. SQLite 3 データベースの生成

データベースの確認

  1. SQLite3 の起動

    sqlite3 zip.db
    
  2. テーブル JIGYOSYO の属性 a0, a3, a4 の確認

    JIGYOSYO テーブルでは,a0 の値が 1つに決まれば,a4 の値が 1つに決まる.

    それを,次の SQL で確認する.結果として何も表示されなければ OK.

    create table T as select distinct a0, a3, a4 from JIGYOSYO;
    SELECT * FROM T WHERE a0 IN ( SELECT a0 FROM T group by a0 HAVING COUNT(*) > 1 );
    

    [image]
  3. テーブル KEN_ALL の属性 a0, a6, a7 の確認

    KEN_ALL テーブルでは,a0 の値が 1つに決まれば,a7 の値が 1つに決まる.

    それを,次の SQL で確認する.結果として何も表示されなければ OK.

    drop table T;
    create table T as select distinct a0, a6, a7 from KEN_ALL;
    SELECT * FROM T WHERE a0 IN ( SELECT a0 FROM T group by a0 HAVING COUNT(*) > 1 );
    

    [image]
  4. テーブル JIGYOSYO で,読みがなが空のレコードがないことを確認.

    次の SQL で確認する.結果として何も表示されなければ OK.

    select * from JIGYOSYO where a1 = '""';
    

    [image]
  5. テーブル KEN_ALL で,読みがなが空のレコードがないことを確認.

    次の SQL で確認する.結果として何も表示されなければ OK.

    select * from JIGYOSYO where a2 = '""';
    select * from JIGYOSYO where a3 = '""';
    select * from JIGYOSYO where a4 = '""';
    

    [image]