2010年12月11日

DBI - DBD::PgPPを使用してPostgreSQLへアクセスする(Windows)

PerlでPostgreSQLへアクセスをしようと思いまして、調べてみるとDBD::Pgというのが初め見つかったのですが、Windowsの場合はセットアップが面倒そう。また調べるとDBD::PgPPというのがありました。こちらの方が簡単そうなのでこちらを使うことにしました。ということでメモ。

Perl環境は、XAMPP(1.7.2)を使用します(デフォルトの場所=>c:\xamppにインストール)。

Windowsの環境変数PATHに、"C:\xampp\perl\bin"を追加しています。

DOSプロンプトから、ppmツールを使用してDBD::PgPPをインストールできます。
C:\>ppm
PPM interactive shell (2.1.6) - type 'help' for available commands.
PPM> install DBD::PgPP
Install package 'DBD-PgPP?' (y/N): y
Installing package 'DBD-PgPP'...
Bytes transferred: 22178
Installing C:\xampp\perl\html\site\lib\DBD\PgPP.html
Installing C:\xampp\perl\site\lib\DBD\PgPP.pm
PPM>


これで準備OKです。データベースに以下のようなテーブルがあれば、
CREATE TABLE department
(
id integer NOT NULL,
"name" character varying(255) NOT NULL,
PRIMARY KEY (id)
);


こんな感じにアクセスできます。

use DBI;
use Encode;

# データベース接続情報を設定
$dbname = "maomao_db";
$host = "localhost";
$user = "maomao";
$password = "maomao";

# データベースへの接続。ここで、PgPP という名前の DBD を指定しています。
$conn = DBI->connect("dbi:PgPP:dbname=$dbname;host=$host", $user, $password ) or die;

$sql = "select * from department";

# SQL の発行
$sth = $conn->prepare($sql);
$sth->execute or die "Can not execute statement: ". $sth->errstr;

# レコード行をハッシュへのリファレンスとして取得します。
while ($href = $sth->fetchrow_hashref) {
print $href->{"id"} . "\n";
# UTF-8→shift-jisへ変換
print encode('shift-jis', decode('utf-8', $href->{"name"} ."\n"));
}

$sth->finish;
$conn->disconnect;


こちらにも書いています(Perlあれこれ)。
posted by 台北猫々 at 21:52| Comment(0) | TrackBack(0) | 技術メモ(Perl)
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/42055503

この記事へのトラックバック