月曜日, 9月 06, 2010

LinuxからWindowsのSQL ServerへRubyで問合せ

2006/12/26perlfreak.vox.comより転載

Linux から Windows へ ODBC 接続できる環境が整っている前提。

 http://raa.ruby-lang.org/cat.rhtml?category_major=Library;category_minor=Database

ここから ruby-odbc、ruby-dbi をダウンロードする。

$ tar zxvf ruby-odbc-0.9993.tar.gz
$ cd ruby-odbc-0.9993
$ ruby extconf.rb
$ make
$ su
Password:
# make install
# exit
$ cd ..

$ tar zxvf dbi-0.1.0.tar.gz
$ cd dbi-0.1.0
$ ruby setup.rb config --with=dbi,dbd_odbc
$ ruby setup.rb setup
$ su
Password:
# ruby setup.rb install
# exit
$ cd ..

以下、/etc/odbc.ini のデータソース名が hoge、/etc/freetds.conf のサーバ名が hogedb の場合のサンプル。OSの文字コードはUTF-8、データベースから取得する文字列の文字コードはSJIS。

#!/usr/bin/env ruby

require 'dbi'
require 'iconv'

$KCODE = 'UTF8'

DBI.connect('DBI:ODBC:hoge;Server=hogedb;Uid=sa;Pwd=;Database=demo') do |dbh|
dbh.select_all('select * from users') do |row|
p Iconv.iconv("UTF-8","SJIS",row.join(","))
end
end

0 件のコメント: