PerlでPostgreSQLにアクセスするには、PostgreSQL用のDBDとperl-DBIをインストールする必要があります。
本資料は、CentOS6でPerlによるPostgreSQLのアクセスをするためにPerlモジュールDBI/DBDのインストール方法と簡単なサンプルコードを記します。
DBIとは、DataBase Interfaceの略語になります。
DBDとは、DataBase Driverの略語になります。
したがって、DBDは各データベース毎に用意されています。
たとえば、PostgreSQLの場合は、perl-DBD-Pgパッケージ, MySQLの場合は、perl-DBD-MySQLパッケージになります。
DBIは、Perlからデータベースを操作するためのAPIになります。
rootになり、以下のコマンドでDBIとDBDをインストールします。
yum -y install perl-DBI perl-DBD-Pg
以下、インストールしたときの出力です。
# yum -y install perl-DBI perl-DBD-Pg Loaded plugins: fastestmirror Determining fastest mirrors <snip> Setting up Install Process Package perl-DBI-1.609-4.el6.x86_64 already installed and latest version Resolving Dependencies --> Running transaction check ---> Package perl-DBD-Pg.x86_64 0:2.15.1-4.el6_3 will be installed --> Finished Dependency Resolution Dependencies Resolved ============================================================================================================================ Package Arch Version Repository Size ============================================================================================================================ Installing: perl-DBD-Pg x86_64 2.15.1-4.el6_3 updates 196 k Transaction Summary ============================================================================================================================ Install 1 Package(s) Total download size: 196 k Installed size: 544 k Downloading Packages: perl-DBD-Pg-2.15.1-4.el6_3.x86_64.rpm | 196 kB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : perl-DBD-Pg-2.15.1-4.el6_3.x86_64 1/1 Verifying : perl-DBD-Pg-2.15.1-4.el6_3.x86_64 1/1 Installed: perl-DBD-Pg.x86_64 0:2.15.1-4.el6_3 Complete!
perl-DBIですが、既にインストールされていました。(Package perl-DBI-1.609-4.el6.x86_64 already installed and latest version)
以下の設定で環境を構築しました。
# IPv4 local connections: host all all 127.0.0.1/32 md5
-bash-4.1$ createuser -P sakura 新しいロールのパスワード: もう一度入力してください: 新しいロールをスーパーユーザとしますか? (y/n)y
以下にPerlによるPostgreSQLアクセスの簡単なサンプルコードを記します。
#!/usr/bin/perl
use DBI;
# PostgreSQL
our $DB_NAME = "postgres";
our $DB_USER = "sakura";
our $DB_PASS = "sakura";
our $DB_HOST = "127.0.0.1";
our $DB_PORT = "5432";
my $dbh = DBI->connect("dbi:Pg:dbname=$DB_NAME;host=$DB_HOST;port=$DB_PORT","$DB_USER","$DB_PASS") or die "$!\n Error: failed to connect to DB.\n";
my $sth = $dbh->prepare("SELECT now();");
$sth->execute();
while (my $ary_ref = $sth->fetchrow_arrayref) {
my ($row) = @$ary_ref;
print $row , "\n";
}
$sth->finish;
$dbh->disconnect;
1;$ ./pg_connect.pl 2012-10-04 17:03:45.030885+09
以下のエラーが発生した場合は、DBI,DBDモジュールがインストールされていません。
上記の「PostgreSQLを操作するために必要なDBIとDBDモジュールをインストール」を参照してください。
$ ./pg_connect.pl install_driver(Pg) failed: Can't locate DBD/Pg.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/sh...