activemdb が動作しない
linux からでも Microsoft の mdb (Access) を操作できるライブラリ(検索に限る)。これを動かすには mdbtools が必要。最初はソースを持ってきて make したもののエラーがでるので困ってたが
sudo apt-get install mdbtools
で OK だった。続けて gem からインストール
sudo gem install activemdb
例えば test.mdb というファイル名で Users テーブルを用意する。
id | name | description |
---|---|---|
1 | basyura | main user |
2 | spider-man | sub user |
検索するソースを用意する。
require 'rubygems' require 'active_mdb' class User < ActiveMDB::Base set_mdb_file 'test.mdb' set_table_name 'Users' end user = User.find_first :id => 1 puts user.name puts user.description
いやぁ、簡単だねー♪と思ったらここからレコードが取れない謎のハマリ。いろいろ試してみて分かったのは、where 句指定があると mdbtools が取ってきてくれないこと。インタラクティブモードで検証してみた。
$ mdb-sql -Fp -d :: test.mdb 1 => select * from Users 2 => go name::description::id basyura::main user::1 spider-man::sub user::2
登録してある 2 レコードが取れる。
1 => select * from Users where id = 1 2 => go name::description::id
取れない orz
mdb を直接開いて同じ sql を投げたら OK なので mdbtools 側の問題だと思うんだけど、、、または office 2003 がサポート外とか?