#navi(../)
* PerlでPostgreSQLにアクセスできるようにする・CentOS [#xdacaf8e]
PerlでPostgreSQLにアクセスするには、PostgreSQL用のDBDとperl-DBIをインストールする必要があります。~
本資料は、CentOS6でPerlによるPostgreSQLのアクセスをするためにPerlモジュールDBI/DBDのインストール方法と簡単なサンプルコードを記します。

#contents
#htmlinsertpcsp(db-top.html,db-sp.html)

* 関連資料 [#n9422e5b]
-[[PostgreSQLをCentOSにインストールする>PostgreSQL/CentOSインストール]]
-[[PHPでPostgreSQLに接続する・pg_connect>PHP/PostgreSQLに接続する・pg_connect]]
-[[PerlでPostgreSQLに接続するサンプルコード>Perl/PostgreSQLに接続するサンプルコード]]
-[[CPANのDBD::Pgがインストールできない場合の対処>PostgreSQL/DBD Pgがインストールできない場合の対処]]

* DBI/DBDとは [#me459659]
DBIとは、DataBase Interfaceの略語になります。~
DBDとは、DataBase Driverの略語になります。~
したがって、DBDは各データベース毎に用意されています。~
たとえば、PostgreSQLの場合は、perl-DBD-Pgパッケージ, MySQLの場合は、perl-DBD-MySQLパッケージになります。~
DBIは、Perlからデータベースを操作するためのAPIになります。

* PostgreSQLを操作するために必要なDBIとDBDモジュールをインストール [#d33adffb]
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)



* テストしたPostgreSQLの環境 [#e3b14d11]
以下の設定で環境を構築しました。
- pg_hba.conf抜粋~
パスワード認証を必要としてあります。
 # IPv4 local connections:
 host    all         all         127.0.0.1/32          md5
- ユーザの追加~
postgresユーザにsuし、sakuraユーザを追加しパスワードを設定しました。
 -bash-4.1$ createuser -P sakura
 新しいロールのパスワード:
 もう一度入力してください:
 新しいロールをスーパーユーザとしますか?  (y/n)y

* PerlでPostgreSQLに接続してみる [#o9a2d315]
以下にPerlによるPostgreSQLアクセスの簡単なサンプルコードを記します。
- サンプルコード
#ref(pg_connect.pl.zip)
 #!/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;

- 実行結果
SELECT now(); が正常に動作しました。
 $ ./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...

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS