end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転しました

DBD::ODBC の インストール

perl のversion

v.5.10は割と新しいverだけど、大丈夫かな?

$ perl -v
This is perl, v5.10.0 built for i686-linux
  :

DBI

DBD::ODBCにはDBIも必要ですが、
再構築したcolinux環境には、まだインストールしていなかったのでインストールします。

$ export LANG=C
$ cd DBI-1.604
$ /usr/local/bin/perl Makefile.PL 
$ make
$ make test
# make install

※「export LANG=C」 って、以前のDBIにも行ったかな?

デフォルトのLANGでは、perl Makefile.PL時に次のようなメッセージが表示されます。
この為、今回はLANG=Cに設定してインストールを行いました。

$ /usr/local/bin/perl Makefile.PL 
Useless use of private variable in void context at Makefile.PL line 524.

Your LANG environment variable is set to "ja_JP.UTF-8"
This is known to cause problems in some perl installations - even stopping
this Makefile.PL to run without errors. If you have problems please try
re-running with LANG unset or with the utf part of LANG removed.

DBD::ODBC

unixODBCはデフォルトでmakeしたので、/usr/localにインストールされています。
もし、unixODBC を /usr/local 以外にインストールしたのであれば、
次のように環境変数:ODBCHOMEを設定します。

export ODBCHOME=/usr/local ←このpathを変更

後は、通常のinstall手順と同様に行います。

$ cd DBD-ODBC-1.15
$ /usr/local/bin/perl Makefile.PL 
$ make
$ make test
# make install

test script

#!/usr/local/bin/perl

use strict;
use DBI;

my $DATA_SRC =	"dbi:ODBC:pg_test";
my $DB_USER =	"postgres";
my $DB_PASSWD =	undef;

my $dbh = DBI->connect($DATA_SRC, $DB_USER, $DB_PASSWD)
    or die "Can't connect to $DATA_SRC $DB_USER $DB_PASSWD";

my $sql =<<EOF;
select * from test
EOF

my $sth = $dbh->prepare($sql) or die "Can't prepare statement";

$sth->execute();


while ( my @row = $sth->fetchrow_array ) {
    print "@row\n";
}

$dbh->disconnect;

↑こんな感じのスクリプトだと、↓こんな感じ

$ ./foo.pl 
Tokyo Shinjuku
Fukuoka Fukuoka
Kanagawa 横浜