ODBC接続

午前中はかなり体調が悪かったけど、午後になってだいぶましになったので、ODBC 接続を試してみることに。

まず ODBCドライバをインストール。

$ gem install dbd-odbc

接続文字列は、"DBI:ODBC:DSN名" でいいらしい。接続は簡単にできたけど、select_one でデータを読もうとすると、failed to allocate memory (NoMemoryError) というエラーがでて読み込めない。

いろいろ探しまわった結果、ODBC NoMemoryError に、set textsize をしろという情報を見つける。

DBI.connect("DBI:ODBC:#{dsn}", dbuser, dbpass) do |db|
  db.do("set textsize 1048576")
  p db.select_one("select * from odbctest")
end

こんな感じでできた。

一応動くところまでいったけど、ODBCドライバに cp932 でデータを渡さないといけないあたりがどうにもいまいち。0.8 ブランチはいいけど、trunk はせっかく全部 UTF8 になってるのに。