Re: Perl DBD::Pg

From: Gunnar Wolf <gwolf(at)gwolf(dot)org>
To: Carlos Agustín L(dot) Avila <cagustinla(at)gmail(dot)com>
Cc: PostgreEs <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Perl DBD::Pg
Date: 2007-11-28 16:35:29
Message-ID: 20071128163528.GA28915@cajita.gateway.2wire.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

"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

--
Gunnar Wolf - gwolf(at)gwolf(dot)org - (+52-55)5623-0154 / 1451-2244
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973 F800 D80E F35A 8BB5 27AF

In response to

  • Perl DBD::Pg at 2007-11-27 23:51:08 from Carlos Agustín L. Avila

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Carlos Agustín L. Avila 2007-11-28 16:43:09 DBD::Pg
Previous Message Gonzalo Leon 2007-11-28 16:25:46 Problema Extraño