2008年04月08日

Ruby DE MySQL For WindowsXP

Rubyでデータベースのデータ移行ツールを作ろうと思いまして、MySQLの操作方法を調べたのですが、なかなか散文的なものが多いですね。なのでメモしておきます。

環境:
WindowsXP SP2
XAMPP 1.6.6a (MySQL 5.0.51)
Ruby 1.8.6

新規にインストールするもの
・Ruby/DBI
・MySQL/Ruby

「Ruby/DBI」はデータベースを透過的に扱うための抽象化層で、「MySQL/Ruby」は、各データベースが提供するのアクセスAPIを呼び出すドライバ層になります。

実際には、「MySQL/Ruby」だけでも操作は可能だそうですが、折角抽象化モジュールが提供されているので、「Ruby/DBI」も使用することにしました。

手順は以下のようになります。
(1)Ruby/DBIのインストール
(2)MySQL/Rubyのインストール
(3)libmysql.dllの場所をPATHに通す。

以下、詳細
============================
(1)Ruby/DBIのインストール
http://rubyforge.org/projects/ruby-dbi/からRuby/DBIのモジュールをダウンロードして適当なフォルダに展開(↓ではCドライブ直下に展開)して、DOSプロンプトから↓のようにコマンド
を実行して、インストールします。

C:\dbi-0.2.0>ruby setup.rb config --with=dbi,dbd_mysql
entering config phase...
config done.

C:\dbi-0.2.0>ruby setup.rb setup
entering setup phase...
setting #! line to "#!c:/usr/local/ruby/bin/ruby"
setup.rb: skip bin/proxyserver(dbd_proxy) by user option
setup.rb: skip ext/dbd_sybase(dbd_sybase) by user option
setup done.

C:\dbi-0.2.0>ruby setup.rb install
entering install phase...
mkdir -p c:/usr/local/ruby/bin
install sqlsh.rb c:/usr/local/ruby/bin
setup.rb: skip bin/proxyserver(dbd_proxy) by user option
mkdir -p c:/usr/local/ruby/lib/ruby/site_ruby/1.8/DBD/Mysql
install Mysql.rb c:/usr/local/ruby/lib/ruby/site_ruby/1.8/DBD/Mysql/Mysql.rb
mkdir -p c:/usr/local/ruby/lib/ruby/site_ruby/1.8/dbi
install columninfo.rb c:/usr/local/ruby/lib/ruby/site_ruby/1.8/dbi
install row.rb c:/usr/local/ruby/lib/ruby/site_ruby/1.8/dbi
install sql.rb c:/usr/local/ruby/lib/ruby/site_ruby/1.8/dbi
install trace.rb c:/usr/local/ruby/lib/ruby/site_ruby/1.8/dbi
install utils.rb c:/usr/local/ruby/lib/ruby/site_ruby/1.8/dbi
install version.rb c:/usr/local/ruby/lib/ruby/site_ruby/1.8/dbi
install dbi.rb c:/usr/local/ruby/lib/ruby/site_ruby/1.8
setup.rb: skip ext/dbd_sybase(dbd_sybase) by user option
install done.

(2)MySQL/Rubyのインストール(RubyGemsで行います)
C:\>gem install mysql
Bulk updating Gem source index for: http://gems.rubyforge.org
Select which gem to install for your platform (i386-mswin32)
1. mysql 2.7.3 (mswin32)
2. mysql 2.7.1 (mswin32)
3. mysql 2.7 (ruby)
4. mysql 2.6 (ruby)
5. Skip this gem
6. Cancel installation
> 1
Successfully installed mysql-2.7.3-mswin32
Installing ri documentation for mysql-2.7.3-mswin32...
Installing RDoc documentation for mysql-2.7.3-mswin32...
While generating documentation for mysql-2.7.3-mswin32
... MESSAGE: Unhandled special: Special: type=17, text=""
... RDOC args: --op c:/usr/local/ruby/lib/ruby/gems/1.8/doc/mysql-2.7.3-mswin32/
rdoc --exclude ext --main README --quiet ext README docs/README.html
(continuing with the rest of the installation)

(3)libmysql.dllの場所をPATHに通す。
XAMPPをデフォルトインストールしていると、「C:\xampp\mysql\bin」にlibmysql.dllはあるので、環境変数PATHに「C:\xampp\mysql\bin」を追加します。

セットアップ完了!!
=============================

DBIの使用方法は↓のサイトなどが参照になるかと思います。

「Ruby DBI モジュールを使う」
http://www.jiubao.org/ruby-dbi/ruby-dbi.html#TOC_16

#一応サンプル的なものは↓
require 'dbi'

dbh = DBI.connect('DBI:Mysql:test', 'user', 'password')

sth = dbh.prepare('select * from simple')
sth.execute

while row=sth.fetch do
p row
end

sth.finish

dbh.disconnect


※ちなみに、
libmysql.dllがPATHに無い場合のエラー
c:/usr/local/ruby/lib/ruby/site_ruby/1.8/dbi.rb:368:in `load_driver': Could not load driver (no such file to load -- c:/usr/local/ruby/lib/ruby/site_ruby/1.8/dbd/Mysql) (DBI::InterfaceError)
from c:/usr/local/ruby/lib/ruby/site_ruby/1.8/dbi.rb:233:in `_get_full_driver'
from c:/usr/local/ruby/lib/ruby/site_ruby/1.8/dbi.rb:219:in `connect'
from mysql_test.rb:4


良かったらクリックお願いします→banner_01.gif
posted by 台北猫々 at 20:58| Comment(0) | TrackBack(0) | 技術メモ(Ruby)