PostgreSQL et Perl

26 Décembre 2000 par FreeBSDDiary
URL : http://www.freebsddiary.org/postgresql-perl.html

Translation by eberkut - http://www.chez.com/keep

Juste après que j'aie commencé à coder le nouveau FreshPorts, J'ai commencé à écrire quelques scripts Perl pour charger des données dans des tables. Le premier problème était d'obtenir l'interface de Perl-PostgreSQL installée. J'ai oublié comment j'ai fait ceci avec MySQL.

L'installation facile

La méthode la plus facile de faire communiquer Perl et PostgreSQL est d'installer un port.  J'ai suivi les instructions trouvées FreeBSD handbook pour compiler les ports depuis internet.

cd /usr/ports/databases/p5-DBD-Pg
make install
L'installation difficile

Il y a une autre méthode. Et c'est celle que j'ai utilisé. Maintenant je le regrette. Je devrais avoir utilisé le port ci-dessus. Malheureusement, je n'ai cherché la première méthode d'abord. J'ai été informé de son existence après que j'aie écrit cet article. Je suggère que vous utilisiez le port et n'utilisiez pas la méthode suivante.

N'utilisez pas les instructions dans le reste de cette section. Utilisez le port.

La solution à la page web du PostgreSQL Guide.  Sur ce site, vous trouverez des informations concernant la Perl 5 interface for PostgreSQL, DBD::PG. C'est là que j'ai trouvé le lien vers :

http://www.perl.com/CPAN-local/modules/by-module/DBD/

Je suggère que vous alliez à l'adresse ci-dessus et recherchiez le fichier de DBD-Pg-xxx.tar.gz qui est le plus récent et le plus grand. Au moment de l'écriture, c'étaient ces liens pour moi :

http://www.perl.com/CPAN-local/modules/by-module/DBD/DBD-Pg-0.95.readme
http://www.perl.com/CPAN-local/modules/by-module/DBD/DBD-Pg-0.95.tar.gz

Télécharger ces fichiers (je vous suggère de la faire en étant non-root). Untar le fichier tar.gz et jetez un oeil au fichier README où vous trouverez les instructions d'installation.

  1. perl Makefile.PL
  2. make
  3. make test
  4. make install

Les instructions suggèrent que vous effectuiez les étapes "1. à 3. comme simple utilisateur, pas comme root !".

Vous aurez aussi à configurer les variables d'environnement suivantes. Ceci est en format bash :

POSTGRES_INCLUDE=/usr/local/pgsql/include; export POSTGRES_INCLUDE
POSTGRES_LIB=/usr/local/pgsql/lib; export POSTGRES_LIB

Voici ce à quoi vous devez vous attendre durant l'étape 4

# make install Installing /usr/local/lib/perl5/site_perl/5.005/i386-freebsd/auto/DBD/Pg/Pg.so Installing /usr/local/lib/perl5/site_perl/5.005/i386-freebsd/auto/DBD/Pg/Pg.bs Files found in blib/arch --> Installing files in blib/lib into architecture dependend library tree! Installing /usr/local/lib/perl5/site_perl/5.005/i386-freebsd/DBD/Pg.pm Installing /usr/local/lib/perl5/site_perl/5.005/i386-freebsd/DBD/dbd-pg.pod Installing /usr/local/lib/perl5/5.00503/man/man3/DBD::Pg.3 Installing /usr/local/lib/perl5/5.00503/man/man3/DBD::dbd-pg.3 Writing /usr/local/lib/perl5/site_perl/5.005/i386-freebsd/auto/DBD/Pg/.packlist Appending installation info to /usr/libdata/perl/5.00503/mach/perllocal.pod

Script Perl d'exemple

Voici un simple script Perl qui devrait vous connecter.

#!/usr/bin/perl
#
#
# a simple test script for connecting to the default
# PostgreSQL database.
#
# Copyright 2000 DVL Software Limited
#
# see http://freebsddiary.org/postgresql-perl.html
#


use DBI;
use strict;

my $dbh;
my $sth;
my @vetor;
my $field;

$dbh = DBI->connect('DBI:Pg:dbname=YourDBName', 'UserID', '');
if ($dbh) {
   print "connected\n";

   $sth = $dbh->prepare("SELECT * from table limit 20");
   $sth->execute;

   print "<table>\n";
   while (@vetor = $sth->fetchrow) {
      print "<TR>\n";
      foreach $field (@vetor) {
         print "<TD VALIGN=TOP>$field</TD>\n";
      }
      print "</TR>\n";
   }

   print "</table>\n";

   $sth->finish;
   $dbh->disconnect();
} else {
   print "Cannot connect to Postgres server: $DBI::errstr\n";
   print " db connection failed\n";
}