MacとかLinuxでは,RubyとSQLiteを連携させたことはあるのですが,Windowsでは試したことがありません。仕事は,Windows環境であり,データベースを扱う必要性を最近感じていますので,Windows環境で試してみました。最終ゴールは,RubyとSQLiteとExcelをうまく連携させることです。なんでこんなことをするのかというと,
からです。
手順
insert_db.rb
郵便番号と住所のデータ(45MIYAZA.CSV)をデータベースへ登録します。
# -*- coding: cp932 -*- require 'rubygems' require 'sqlite3' require 'nkf' require 'csv' db = SQLite3::Database.new("zipcode.db") sqls=<<-EOS drop table if exists ziptable; create table ziptable ( code text, address text ); EOS db.execute_batch(sqls) CSV.foreach("45MIYAZA.CSV") do |row| code = row[2] address = row[6] + row[7] + row[8] sql = "insert into ziptable (code, address) values (\'#{code}\', \'#{NKF::nkf('-w', address)}\')" db.execute(sql) puts code + " : " + address end db.close
search_db.rb
宮崎県庁がある「橘通東」の郵便番号を調べてみます。
# -*- coding: cp932 -*- require 'rubygems' require 'sqlite3' require 'nkf' db = SQLite3::Database.new("zipcode.db") search_word = NKF::nkf('-w', "橘通東") sql = "select code, address from ziptable where address like \'%#{search_word}%\'" db.execute(sql) do |code, address| code = $1 + "-" + $2 if /(\d{3})(\d{4})/ =~ code puts "#{code}\t#{NKF::nkf('-s', address)}" end db.close