タグ:dbi ( 3 ) タグの人気記事

ruby dbi とRDBMS

rubyとdbiで勉強して(あそんで)いる、このごろ。

require 'dbi'
dbh = DBI.connect("dbi:pg:test:localhost","user","password")
row = dbh.select_one( "select * from hoge" )
row.each{|col|
puts col.class
}
でDB側とrubyとでデータ型の関連を調べてみた。
postgvresqlは
int → fixnum
decimal → bigdecmal
varchar → string
float → float
double → float
rubyのfloatはdoubleと同精度。
postgresqlのdecimalがbigdecimalに紐付けられているのは好感がもてる。

mysqlも同様な結果。

ところがoracleは
number(10,2)をFLOATで返してくる。これはまずいんじゃないかな。
ODBC経由にするとnumber型がすべてBigdecimal型で返ってくる。
ORACLEのFLOAT、REALはいずれもstring型。

mssqlもODBC経由なら
int → Fixnum
decimal → bigdecimal
float,real → float

やっぱりORACLEが一番くせが強いかな?
[PR]
by nora1962 | 2009-04-14 05:56 | PC

rubyで[BUG] Segmentation fault その後

ruby-pg-0.7.9.2008.10.13をVISTA環境でコンパイルするとDBIで使用できずに、[BUG] Segmentation faultが表示されて落ちる件のその後。

環境はVISTA SP1、VISUAL C++ 2008。

ためしにもう一台もっているPC( XP Pro )でVISUAL C++ 6.0でコンパイルしたpg.soを
「C:\ruby\lib\ruby\site_ruby\1.8\i386-msvcrt」にコピーしてみた。

ビンゴ!

DBIが動く。
ちなみにVISUAL C++ 2005でコンパイルしたpg.soではだめだった。

しかしVISUAL C++ 6.0 もうサポート終了だし、VISTAにインストールしようとすると「互換性」なんちゃらかちゃっらのメッセージが出てくる。正常にインストールできないみたいだ。

Ruby本体をOneClickInstaller版使っているのが悪いのかね。

しかし、Ruby本体をVisual C++ 2008でコンパイルする気にはさすがにならない。
とりあえず、Rubyの学習が目的なので現状でよしとする。
[PR]
by nora1962 | 2009-03-29 01:33 | PC

DBD-pgをインストール

windows vista activeperl 5.8.9の環境でpostgresqlにDBI接続したいのだが、DBD-pgがなかなか見つからなかった。
ようやく見つかったので一応メモ。
http://trouchelle.com/perl/ppmrepview.pl
から見つけた。
ppm rep add trouchelle.com http://trouchelle.com/ppm/
でレポジトリを追加して
ppmからDBD-pgをインストール
(ppm install DBD-pg してもいいんだけれど)
[PR]
by nora1962 | 2009-03-26 00:49