このページでは,日本郵政「ゆうびんホームページ」で公開されている 2つの郵便番号データのCSV(カンマ区切り値)形式ファイルを使う.
これらのファイルを,リレーショナルデータベース管理システム SQLite 3 のテーブル(テーブル名は ken_all)に格納します.
SQLite 3 について: 別ページ »にまとめ
謝辞:
・郵便番号データについて、日本郵政に感謝します
【サイト内の関連ページ】
【関連する外部ページ】 Python の公式ページ: https://www.python.org/
次のように操作する.
python -m pip install csvkit
端末で,次のコマンドを実行する.
sudo apt -y install csvkit python3-csvkit
それぞれのスキーマは次のとおりである.
del zip.db echo a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14 > k.csv type ken_all.csv >> k.csv csvsql --db sqlite:///zip.db --insert k.csv echo a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12 > j.csv type jigyosyo.csv >> j.csv csvsql --db sqlite:///zip.db --insert j.csv echo alter table k rename to ken_all; | sqlite3 zip.db echo alter table j rename to jigyosyo; | sqlite3 zip.db echo select * from ken_all limit 20; | sqlite3 zip.db echo select * from jigyosyo limit 20; | sqlite3 zip.db
確認のため表示している.
rm -f zip.db echo "a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14" > k.csv cat KEN_ALL.CSV >> k.csv csvsql --db sqlite:///zip.db --insert k.csv echo "a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12" > j.csv cat JIGYOSYO.CSV >> j.csv csvsql --db sqlite:///zip.db --insert j.csv echo "alter table k rename to ken_all;" | sqlite3 zip.db echo "alter table j rename to jigyosyo;" | sqlite3 zip.db echo "select * from ken_all limit 20;" | sqlite3 zip.db echo "select * from jigyosyo limit 20;" | sqlite3 zip.db
確認のため先頭部分を表示している.
sqlite3 zip.db
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 );
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 );
次の SQL で確認する.結果として何も表示されなければ OK.
select * from JIGYOSYO where a1 = '""';
次の SQL で確認する.結果として何も表示されなければ OK.
select * from JIGYOSYO where a2 = '""'; select * from JIGYOSYO where a3 = '""'; select * from JIGYOSYO where a4 = '""';