郵便番号データ
郵便番号データは、いくつか公開されているようですが、元は日本郵便が公開しているcsvデータがベースになっているようです。
郵便番号データダウンロード
ここで公開されているデータは、データベースとして使うにはいくつか問題があり、加工が必要です。
加工して公開されている郵便番号データは、ほとんどカナデータのようですので、カナとローマ字を統合したものを作ってみます。
データ統合用ツールとしては、ACCESS を使いました。
SQLで処理できないところは、VBA で細かな洗い替えができます。
カナとローマ字のデータ比較
DATA | 件数 | 市区町村 |
---|---|---|
カナ1 | 123,932 | 札幌市中央区 |
カナ2 | 123,932 | 札幌市中央区 |
ローマ字 | 123,803 | 札幌市 中央区 |
- カナとローマ字を比較すると件数が違います。
- 市区町村の持ち方(空白の有無)
無理やりキーを合わせて統合
- 町域が長くて、複数行に渡っているものを統合
町域の漢字が異なって、カナが同じものはそのままにしておきます。
問題のデータは、京都の住所ですね。
町域カナをキーにして、複数行になっているものを抽出します。
複数行の連結は、SQLでは無理なので VBA で行います。
Sub update_NK1()
Dim cn As ADODB.Connection
Dim rs1 As ADODB.Recordset
Dim rs2 As ADODB.Recordset
Set cn = Application.CurrentProject.Connection
Set rs1 = New ADODB.Recordset
Set rs2 = New ADODB.Recordset
rs1.Open "KEN_ALL_K2_ダブり4カナP2_ID", cn, adOpenStatic, adLockReadOnly
rs2.Open "KEN_NK1", cn, adOpenKeyset, adLockOptimistic
rs1.MoveFirst
Do Until rs1.EOF
rs2.Find "ID='" & rs1![IDの最小] & "'"
rs2![町域] = rs2![町域] & rs1![町域]
rs2.Update
rs1.MoveNext
Loop
rs1.Close
rs2.Close
cn.Close
End Sub
- 市区町村の空白削除
- 町域の"以下に掲載がない場合"を削除
- カナデータをベースにして、ローマ字データを統合
- マッチしないレコードは、都道府県と市区町村のローマ字のみ設定
この辺の処理は、SQL でいけます。
- レコードの分割
- csv エクスポート
kintone アプリで読み込めるように、10万件以下に分割します。
SELECT TOP 60000 KEN_NK2.*
FROM KEN_NK2
ORDER BY ID;
SELECT KEN_NK2.*
FROM KEN_NK2
WHERE ID > (select max(ID) from KEN_NK2_1_60000)
ORDER BY ID;
kintone 郵便番号アプリ
郵便番号アプリを用意して、csv を読み込めば完成です。
漢字・カナ・ローマ字が揃っていますので、いろいろ使える用途が増えます。
ただし、ローマ字のビル名などにはデータ自体に間違いもありますので、町域の部分は都度マニュアル修正が必要です。
作成した郵便番号テンプレートと郵便番号データの公開
rex0220 stores で公開しました。
kintone 郵便番号テンプレート&郵便番号データ