LoginSignup
1
1

More than 5 years have passed since last update.

kintone 郵便番号データ(カナとローマ字)の作成

Last updated at Posted at 2016-07-20

郵便番号データ

郵便番号データは、いくつか公開されているようですが、元は日本郵便が公開しているcsvデータがベースになっているようです。
郵便番号データダウンロード
ここで公開されているデータは、データベースとして使うにはいくつか問題があり、加工が必要です。

加工して公開されている郵便番号データは、ほとんどカナデータのようですので、カナとローマ字を統合したものを作ってみます。
データ統合用ツールとしては、ACCESS を使いました。
SQLで処理できないところは、VBA で細かな洗い替えができます。

カナとローマ字のデータ比較

DATA 件数 市区町村
カナ1 123,932 札幌市中央区
カナ2 123,932 札幌市中央区
ローマ字 123,803 札幌市 中央区
  • カナとローマ字を比較すると件数が違います。
  • 市区町村の持ち方(空白の有無)

無理やりキーを合わせて統合

  • 町域が長くて、複数行に渡っているものを統合

町域の漢字が異なって、カナが同じものはそのままにしておきます。
問題のデータは、京都の住所ですね。

image

町域カナをキーにして、複数行になっているものを抽出します。

image

複数行の連結は、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 でいけます。

image

  • レコードの分割
  • 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 を読み込めば完成です。
漢字・カナ・ローマ字が揃っていますので、いろいろ使える用途が増えます。
ただし、ローマ字のビル名などにはデータ自体に間違いもありますので、町域の部分は都度マニュアル修正が必要です。

image

作成した郵便番号テンプレートと郵便番号データの公開

rex0220 stores で公開しました。
kintone 郵便番号テンプレート&郵便番号データ

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1