郵便番号 CSV データを SQLite 3 にインポート(SQLite 3 を使用)
- 住所の郵便番号(CSV形式)(ken_all.csv)
- 事業所の個別郵便番号(CSV形式)(jigyosyo.csv)
これらのファイルを,リレーショナルデータベース管理システム SQLite 3 のテーブルへ効率的に格納する.
SQLite 3 の詳細情報: 別ページ »にまとめ
謝辞:
・郵便番号データの提供に関して,日本郵便に深く感謝申し上げます
1. 前準備
Python 3.12 のインストール
以下のいずれかの方法で Python 3.12 をインストールする。
方法1:winget によるインストール
Python がインストール済みの場合、この手順は不要である。管理者権限のコマンドプロンプトで以下を実行する。管理者権限のコマンドプロンプトを起動するには、Windows キーまたはスタートメニューから「cmd」と入力し、表示された「コマンドプロンプト」を右クリックして「管理者として実行」を選択する。
winget install -e --id Python.Python.3.12 --scope machine --silent --accept-source-agreements --accept-package-agreements --override "/quiet InstallAllUsers=1 PrependPath=1 AssociateFiles=1 InstallLauncherAllUsers=1"
--scope machine を指定することで、システム全体(全ユーザー向け)にインストールされる。このオプションの実行には管理者権限が必要である。インストール完了後、コマンドプロンプトを再起動すると PATH が自動的に設定される。
方法2:インストーラーによるインストール
- Python 公式サイト(https://www.python.org/downloads/)にアクセスし、「Download Python 3.x.x」ボタンから Windows 用インストーラーをダウンロードする。
- ダウンロードしたインストーラーを実行する。
- 初期画面の下部に表示される「Add python.exe to PATH」に必ずチェックを入れてから「Customize installation」を選択する。このチェックを入れ忘れると、コマンドプロンプトから
pythonコマンドを実行できない。 - 「Install Python 3.xx for all users」にチェックを入れ、「Install」をクリックする。
インストールの確認
コマンドプロンプトで以下を実行する。
python --version
バージョン番号(例:Python 3.12.x)が表示されればインストール成功である。「'python' は、内部コマンドまたは外部コマンドとして認識されていません。」と表示される場合は、インストールが正常に完了していない。
AIエディタ Windsurf のインストール
Pythonプログラムの編集・実行には、AIエディタの利用を推奨する。ここでは、Windsurfのインストールを説明する。
Windsurf がインストール済みの場合、この手順は不要である。管理者権限のコマンドプロンプトで以下を実行する。管理者権限のコマンドプロンプトを起動するには、Windows キーまたはスタートメニューから「cmd」と入力し、表示された「コマンドプロンプト」を右クリックして「管理者として実行」を選択する。
winget install -e --id Codeium.Windsurf --scope machine --accept-source-agreements --accept-package-agreements --override "/VERYSILENT /NORESTART /MERGETASKS=!runcode,addtopath,associatewithfiles,!desktopicon"
powershell -Command "$env:Path=[System.Environment]::GetEnvironmentVariable('Path','Machine')+';'+[System.Environment]::GetEnvironmentVariable('Path','User'); windsurf --install-extension MS-CEINTL.vscode-language-pack-ja --force; windsurf --install-extension ms-python.python --force"
--scope machine を指定することで、システム全体(全ユーザー向け)にインストールされる。このオプションの実行には管理者権限が必要である。インストール完了後、コマンドプロンプトを再起動すると PATH が自動的に設定される。
【関連する外部ページ】
Windsurf の公式ページ: https://windsurf.com/
csvkit のインストール(Windows,Ubuntu 上)
- Windows における csvkit のインストール手順
Windows で,コマンドプロンプトを管理者として起動する.
以下のコマンドを実行する.
python -m pip install csvkit - Ubuntu における csvkit のインストール手順
端末で,次のコマンドを実行する.
sudo apt -y install csvkit python3-csvkit
SQLite 3 のインストール
郵便番号 CSV データの準備
- 具体的なダウンロード手順は,別ページ »で詳しく説明.2つのCSV ファイルのダウンロードを完了させる必要がある
2. 郵便番号 CSV データから,SQLite 3 データベースを生成 (csvsql, sqlite3 を使用)
- 処理対象の CSV ファイル名: ken_all.csv, jigyosyo.csv
- 生成する SQLite 3 データベース名: zip.db
- 作成されるテーブル名: ken_all, jigyosyo
それぞれのテーブルスキーマは以下の通りである.
- KEN_ALL(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
- JIGYOSYO(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)
- 最初に,2つのファイルの文字コードを,UTF-8 形式に変換する
- SQLite 3 データベースの生成手順
- Windows 環境での実行手順
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正常に処理できたことを確認するため,データを表示する.
- Ubuntu 環境での実行手順
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正常に処理できたことを確認するため,先頭部分のデータを表示する.
- Windows 環境での実行手順
3. データベースの整合性確認
- SQLite 3 の起動方法
sqlite3 zip.db - テーブル JIGYOSYO の属性 a0, a3, a4 の整合性確認
JIGYOSYO テーブルにおいて,同一の a0(JISコード)に対して a3(都道府県名)と a4(市区町村名)の組み合わせが複数存在しないことを確認する.
以下の SQL クエリで検証する.結果が空の場合,整合性が保たれている.
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, a6, a7 の整合性確認
KEN_ALL テーブルにおいて,同一の a0(全国地方公共団体コード)に対して a6(都道府県名)と a7(市区町村名)の組み合わせが複数存在しないことを確認する.
以下の SQL クエリで検証する.結果が空の場合,整合性が保たれている.
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 );
- テーブル JIGYOSYO における読みがなデータの完全性確認
以下の SQL クエリで検証する.結果が空の場合,すべての読みがなが正しく格納されている.
select * from JIGYOSYO where a1 = '""';
- テーブル KEN_ALL における読みがなデータの完全性確認
以下の SQL クエリで検証する.結果が空の場合,すべての読みがなが正しく格納されている.
select * from KEN_ALL where a3 = '""'; select * from KEN_ALL where a4 = '""'; select * from KEN_ALL where a5 = '""';