| 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: | Whole Thread | Raw Message | 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 |