日本全国の郵便番号をSQLiteにする。(番外編)

日本全国の郵便番号をSQLのデータベーステーブルにすると思いのほか時間が掛かります。
私の低スペックパソコンでは数時間かかりました。
(時間が掛かるのは私が作ったプロデルのプログラムロジックに問題がある事が原因。通常なら数分で終わる筈なのです。バインド値を使えば通常は高速に処理できるのですがどこかが間違っているみたいです。)
使用するデータは日本郵便から提供されている日本全国の郵便番号データ「KEN_ALL.CSV」となります。
日本全国が必要な人はあまりいないと思うので、必要な都道府県のデータを選んでデータベース化してください。
前回のサンプルとは項目名やテーブル名が少し変わっていますが基本的には同じものです。
テーブル名を変えた関係で検索プログラムのテーブル名も変更してから利用してください。

—————————— ここから

//
// 全国郵便番号SQL作成
// 120万件のデータを処理する為、
// 実行から終了するまで数時間かかります。
//
// 画面の入出力は余計な時間が掛かる為ありません
//
// プロデルからSQLiteデータベースを操作する例 //
//SQLiteを利用するには、System.Data.SQLite.dllが必要です
「Produire.Data.SQLite.dll」を利用する

SQLiteというSQLiteデータベースを作る
SQLiteのデータソースを、「test01.db」に変える
SQLiteへ接続する
/*
     1.全国地方公共団体コード
     2.(旧)郵便番号(5桁)
     3.郵便番号(7桁)
     4.都道府県名(半角カタカナ)
     5.市区町村名(半角カタカナ)
     6.町域名(半角カタカナ)
     7.都道府県名 (漢字)
     8.市区町村名 (漢字)
     9.町域名 (漢字)
     
     ——————————
     今回使用する項目
     ——————————
     3.郵便番号(7桁)(数字だけど文字列)
     7.都道府県名 (漢字)
     8.市区町村名 (漢字)
     9.町域名 (漢字)
 
*/

//CSVファイルをデータ表に読み込み保存されているデータを取得。
データ表を作ってデータとする
データへ「KEN_ALL.CSV」から読み込む // 全国の郵便番号データ
一覧は、データの一覧
カウント=0
テーブルを、作成する // テーブルを作成します

データの一覧のすべての【行要素】についてそれぞれ繰り返す
     //行要素を表示 //各行ごとのデータは行要素です
     カウント=カウント+1  //行要素で良いはずなのですが不安なのでカウントを作ります。
     レコードは、一覧(カウント)  //一覧にCSVデータを読み込みます
     //レコードを報告する
     郵便番号は、レコード(3)// 郵便番号7ケタ 郵便番号は後で2つに分ける
     都道府県は、レコード(7)//都道府県・漢字
     市町村は、レコード(8)//市町村・漢字
     町名は、レコード(9)//町名・漢字

     //SQLiteにデータを書き込みます
     データを、追加する

繰り返し終わり

//最後に作成したデータをSQLiteで読み込んで表示します
データを、取得する

テーブルを、作成する手順
//テーブルを、破棄する手順
   ーーテーブルの破棄
   //SQLiteで「DROP TABLE zip;」を実行する
   
     ーーテーブルの作成 テーブル名 zip
     //1.zip1 =郵便番号
     //2.ken =都道府県名
     //3.city =市区町村名
     //4.machi =町域名
     SQLiteで「CREATE TABLE zip (
          zip1 TEXT,
          ken TEXT,
          city TEXT,
          machi TEXT);」を実行する
終わり

データを、取得する手順
     ーーデータの取得
/*
     SQLiteから「SELECT * FROM zip」を取得して結果とする
     「初期状態」として結果の内容を情報アイコンで表示する
*/
     「終わりました」と表示する。
終わり

データを、追加する手順
     ーーデータの追加

     SQL文は、「INSERT INTO zip (zip1,ken,city,machi) VALUES(?,?,?,?);」
     バインド値は、{郵便番号,都道府県,市町村,町名}
     //バインド値を報告する
     SQL文をバインド値としてSQLiteで実行する

終わり

—————————— ここまで

投稿者:

こきりこ

その辺に居る、ダメなおじさんです

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください