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
Views: Raw Message | Whole Thread | Download mbox | Resend email
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

Browse pgsql-es-ayuda by date

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