Skip site navigation (1) Skip section navigation (2)

Re: Perl DBD::Pg

From: "Carlos Agustín L(dot) Avila" <cagustinla(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Perl DBD::Pg
Date: 2007-11-28 17:18:46
Message-ID: 474DA2F6.30103@gmail.com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Gunnar Wolf escribió:
> "Carlos Agustín L. Avila" dijo [Tue, Nov 27, 2007 at 05:51:08PM -0600]:
>   
>> Hola lista.
>> ¿Como puedo obtener el nombre de los atributos de una entidad desde un script 
>> en Perl?
>> Gracias.
>>     
>
> Hola,
>
> Tu respuesta no es específica a Perl - esto puedes aplicarlo a
> través de cualquier esquema de acceso a Postgres. 
>
> Postgres te oculta las tablas del sistema, llamadas pg_*. La
> información específica que pides está en las tablas pg_class (donde se
> almacena la información de las tablas) y pg_attribute (donde,
> atinaste, están definidos los atributos de cada una de ellas). Los
> atributos menores a 0 no te interesan por ahora ;-) Prueba lo
> siguiente: 
>
> SELECT c.relname AS tabla, a.attname AS atributo, a.attnum AS orden
>     FROM pg_class c,pg_attribute a WHERE c.relname not like 'pg_%' AND
>     a.attrelid=c.oid AND attnum > 0;
>
> Umh... Bueno, veo que no todos los relnames internos de Postgres son
> ya pg_* (como lo eran, si no me equivoco, en 7.4) ;-) Pero bueno, de
> ahí puedes seguir adelante.
>
> tip: http://www.postgresql.org/docs/8.2/interactive/catalogs.html
>
>   
Ya quedo resuelto, gracias a Gunnar y a 
http://search.cpan.org/~timb/DBI-1.601/DBI.pm
$res2 = $dbh->prepare("
SELECT relname, relfilenode FROM pg_class WHERE relname = 'plantillas'
");
$res2->execute();
@row2 = $res2->fetchrow_array;
print "$row2[0]\t$row2[1]\n";

my $rows3 = $dbh->selectall_arrayref("
SELECT attname, attnum FROM pg_attribute WHERE attrelid = $row2[1] AND 
attnum > 2",
{ Slice => {} }
);
foreach my $row3 ( @$rows3 ) {
  print "Nombre: $row3->{attname}\t$row3->{attnum}\n";
}

OT: ¿Existe alguna comunidad de Perl en México DF?
Gracias.

In response to

Responses

pgsql-es-ayuda by date

Next:From: Edwin QuijadaDate: 2007-11-28 17:24:33
Subject: libpqxx en windows
Previous:From: fulanito detalDate: 2007-11-28 17:10:55
Subject: Parametros de inicio y monitor de postgres

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group