[Perl] => [DBI]


この日記のはてなブックマーク数 このエントリーを含むはてなブックマーク

データベースへラージオブジェクトを書き込む場合、書き込みの処理とOIDを格納する2ステップに分かれます。以下の例では$dataに格納するデータが入っているものと見なします。適宜エラー処理をしてください。


#!/usr/bin/perl
use DBI;


#AutoCommitはoffにすること
$dbh = $dbh = DBI->connect("DBI:Pg:dbname=dbname","username","password",{AutoCommit => 0});


#ラージオブジェクトに書き込むデータの長さを取得
my($length) = length($data);


#ラージオブジェクトの作成
my($lobj_id) = $dbh->func($dbh->{pg_INV_WRITE}, 'lo_creat');


#ラージオブジェクトを書き込みでオープン
my($lobj_fd) = $dbh->func($lobj_id, $dbh->{pg_INV_WRITE}, 'lo_open');


#ラージオブジェクト書き込み
$dbh->func($lobj_fd, $data, $length, 'lo_write');


#ラージオブジェクトをクローズ
$lobj_fd = $dbh->func($lobj_fd, 'lo_close');


#オブジェクトIDをデータベースに格納
my($sth) = $dbh->prepare("UPDATE sample SET \"OID\" = $lobj_id WHERE \"ID\" = $id");
$sth->execute;
$sth->finish();
$dbh->commit();
$dbh->disconnect();



関連記事
SQL::Abstract
DBD::Pgのインストール
doメソッド
カラム名の一覧を取得
該当するレコードの数を取得するには
fetchall_arrayref
fetchrow_hashref
ラージオブジェクトのインポート
ラージオブジェクトの削除
ラージオブジェクトの書き込み
ラージオブジェクトのデータを取得
DBI - database handle
広告