[Pgsql-ayuda] Listado de tablas
Ing. Roberto Andrade Fonseca
randrade@abl.com.mx
Fri, 4 Oct 2002 15:50:29 -0500 (CDT)
Hola:
On Fri, 4 Oct 2002, AAAGU wrote:
> Holas,
> soy nuevo en esto. Alguien podria decirme si es
> posible obtener un listado con los campos de
> determinada tabla si, por ejemplo, estoy trabajando
> con Java y Postgresql?
> Gracias.
Si ejecutas psql con el par=E1metro -E puedes ver las consultas que genear =
los comandos internos, entre ellos el comando \d:
Por ejemplo:
\d pais
genera:
********* QUERY **********
SELECT relhasindex, relkind, relchecks, reltriggers, relhasrules
FROM pg_class WHERE relname=3D'pais'
**************************
********* QUERY **********
SELECT a.attname, format_type(a.atttypid, a.atttypmod), a.attnotnull, a.att=
hasdef, a.attnum
FROM pg_class c, pg_attribute a
WHERE c.relname =3D 'pais'
AND a.attnum > 0 AND a.attrelid =3D c.oid
ORDER BY a.attnum
**************************
********* QUERY **********
SELECT substring(d.adsrc for 128) FROM pg_attrdef d, pg_class c
WHERE c.relname =3D 'pais' AND c.oid =3D d.adrelid AND d.adnum =3D 1
**************************
********* QUERY **********
SELECT c2.relname
FROM pg_class c, pg_class c2, pg_index i
WHERE c.relname =3D 'pais' AND c.oid =3D i.indrelid AND i.indexrelid =3D c2=
=2Eoid
AND NOT i.indisunique ORDER BY c2.relname
**************************
********* QUERY **********
SELECT c2.relname
FROM pg_class c, pg_class c2, pg_index i
WHERE c.relname =3D 'pais' AND c.oid =3D i.indrelid AND i.indexrelid =3D c2=
=2Eoid
AND i.indisprimary AND i.indisunique ORDER BY c2.relname
**************************
********* QUERY **********
SELECT c2.relname
FROM pg_class c, pg_class c2, pg_index i
WHERE c.relname =3D 'pais' AND c.oid =3D i.indrelid AND i.indexrelid =3D c2=
=2Eoid
AND NOT i.indisprimary AND i.indisunique ORDER BY c2.relname
**************************
********* QUERY **********
SELECT t.tgname
FROM pg_trigger t, pg_class c
WHERE c.relname=3D'pais' AND c.oid =3D t.tgrelid
**************************
Table "pais"
Column | Type | Modifiers =
=20
-------------+-----------------------+-------------------------------------=
------------
id | integer | not null default nextval('"pais_id_s=
eq"'::text)
descripcion | character varying(30) |=20
Primary key: pais_pkey
Triggers: RI_ConstraintTrigger_153561,
RI_ConstraintTrigger_153563
La que necesitas es:
SELECT a.attname, format_type(a.atttypid, a.atttypmod), a.attnotnull, a.att=
hasdef, a.attnum
FROM pg_class c, pg_attribute a
WHERE c.relname =3D 'pais'
AND a.attnum > 0 AND a.attrelid =3D c.oid
ORDER BY a.attnum
pero tal ves debes pedir menos campos.
Saludos,
Roberto Andrade Fonseca
randrade@abl.com.mx