PostgreSQLにはバイナリデータを格納する為にbytea型という独自仕様が用意されていますが、私の場合、Base64 encoding後、text型へ格納しています。
CREATE TABLE data_binary ( file_name text primary key, data text );
次の例は、compress + base64 を行っています。
use Compress::Zlib; use MIME::Base64 (); sub insert_binary { my ($self,$fil_name,$data) = @_; #compress + Base64 my $enc_data = $self->encode_bynary($data); my $sql =<<EOF; insert into data_binary (file_name,data) values (?,?) EOF my $sth = $self->{dbh}->prepare($sql); $sth->execute($file_name,$enc_data); return 1; } sub encode_bynary { my ($self,$src) = @_; $src = compress($src); return MIME::Base64::encode($src); }