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
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 |