sqlite3 で郵便番号データベースを作った。
まず、日本郵便の郵便番号データダウンロードページから、郵便番号のデータをダウンロードして解凍した。 解凍してできた KEN_ALL.csv をエクセルで開き、新郵便番号、都道府県名読み、市町村名読み、町名読み、都道府県名、市町村名、町名のフィールドを残して、後のカラムは削除した。これを、ubin.csvという名前をつけて保存した。 次に、TeraPad でこのファイルを開き、文字コードを指定して保存で、文字コードを utf-8 に、改行コードを LF に指定して、ubin.txt という名前で保存した。 それから、データベースを作るために、次のコードを ubin.sql として作成。 create table zipcode( zip text, keny text, siy text, choy text, ken text, si text, cho text ); これを使って、sqlite3 で ubin.db を作成した。 C:\Users\******\Desktop\ken_all> sqlite3 ubin.db < ubin.sql さらに、コマンドプロンプトから、次のように入力して ubin.txt を ubin.db の zipcode テーブルに読み込ませた。 C:\Users\******\Desktop\ken_all> sqlite3 -separator , ubin.db ".import ubin.txt zipcode" これで、データベースは完成したが、このままでは utf-8 なのでコマンドプロンプトで表示できないし、日本語入力もできない。そこで、ruby で文字コード変換するために次のプログラム ubin.rb を作った。 require 'kconv' require 'sqlite3' db = SQLite3::Database.new('ubin.db') print 'ubin> ' line = gets.chomp.toutf8 while line != '.quit' result = db.execute(line) result.each {|row| puts row.join(' ').tosjis} print 'ubin >' line = gets.chomp.toutf8 end db.close これを ruby ubin.rb で起動すると、コマンドプロンプトから SQL で、ubin.db を操作することができる。コマンドプロンプトでの日本語入力は、Alt+[半/全] でできる。 C:\Users\******\Desktop\ken_all> ruby ubin.rb ubin> select zip, ken, si, cho from zipcode where cho = '玉川' なお、この ubin.db は、そのまま、 ubuntu でも使うことができる。その場合は普通にターミナルから入力して日本語入力もできる。 $ sqlite3 ubin.db "select * from zipcode where cho = '玉川'" SQLite のホームページの文書に、sqlite3 は、Oracleの置き換えではなくて、fopen() の置き換えだと書いてあったが、本当だ。データを db ファイルにしておくとどこにでも持っていけるし、検索も並べ替えも自由だし、sqlite3-ruby を使えばデータの加工も簡単にできる。便利な物があったものだ。
by tnomura9
| 2008-10-10 06:40
| Ruby
|
Comments(0)
|
カテゴリ
新型コロナウイルス 主インデックス Haskell 記事リスト 圏論記事リスト 考えるということのリスト 考えるということ ラッセルのパラドックス Haskell Prelude Ocaml ボーカロイド 圏論 jQuery デモ HTML Python ツールボックス XAMPP Ruby ubuntu WordPress 脳の話 話のネタ リンク 幸福論 キリスト教 心の話 メモ 電子カルテ Dojo JavaScript C# NetWalker ed と sed HTML Raspberry Pi C 言語 命題論理 以前の記事
最新のトラックバック
最新のコメント
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||