libpq: possible to get list of tables, fields, and types?

Started by heasleyover 24 years ago3 messagesgeneral
Jump to latest
#1heasley
heas@shrubbery.net

using libpq, is it possible to get a list of tables (psql: \d equivalent),
list of fields for each of those tables (psql: \d <table>), and types for
each of the fields for a given container?

there doesnt seem to be a way to do any of these, except for getting the
field type of a returned tuple with PQftype() and looking up the returned
oid in the pg_attribute.

it does appear to be possible to query system tables (psql: \dS) for some
of this data, such as pg_tables for a list of tables. yet there doesnt
appear to be a way to associate these entries to a particular datbase
container. am i missing some way to glue these tables together to get a
list of tables per-container and fields per-table?

tia,
-heas

#2Tommi Maekitalo
t.maekitalo@epgmbh.de
In reply to: heasley (#1)
Re: libpq: possible to get list of tables, fields, and types?

john heasley wrote:

using libpq, is it possible to get a list of tables (psql: \d equivalent),
list of fields for each of those tables (psql: \d <table>), and types for
each of the fields for a given container?

there doesnt seem to be a way to do any of these, except for getting the
field type of a returned tuple with PQftype() and looking up the returned
oid in the pg_attribute.

it does appear to be possible to query system tables (psql: \dS) for some
of this data, such as pg_tables for a list of tables. yet there doesnt
appear to be a way to associate these entries to a particular datbase
container. am i missing some way to glue these tables together to get a
list of tables per-container and fields per-table?

tia,
-heas

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org

Hi,

yes - system tables is the right answer.

pg_tables is a view on pg_class. And pg_class has the information you
need. Look into the developers guide for a description of systemtables.

Information about the attributes are in pg_attribute. Just join it with
pg_class:
select relname, attname, atttypid, attlen from pg_attribute join
pg_class on attrelid = pg_class.oid

A good source for information is pgaccess. It is a TCL-script. You can
find examples in the source.

Tommi

#3William WAISSE
wwaisse@esprit-equipe.fr
In reply to: Tommi Maekitalo (#2)
Re: libpq: possible to get list of tables, fields, and types?

select relname, attname, atttypid, attlen from pg_attribute join
pg_class on attrelid = pg_class.oid

This gives all the attributes of a given table, but I couldn't find any join
giving all the tables of a particular database ( no dboid in pg_class ).

Did someone here found this kind of join ?

--
cordialement, William WAISSE fpr = 9CCD 7DA2 7050 8805 F471 03D1 DF76 B78C
690B 4E07
--
Computers are like air conditionners. They work better when you close windows.
--
Visitez donc mon site perso (version 0.4 du 29/05/2001) :
http://www.neofutur.net
--
Vous habitez dans l'Essonne et vous aimez les Pingouins ???
visitez donc la GAULE(=LUG91) : http://www.gaule.org
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS/E/MU d- s: a- C++++ UL+++ P+ L++++ E--- W++ N o-- K- w---
O- M- V- PS+ PE-- Y++ PGP++ t+ 5 X++ R++ tv- b+++ DI- D G e++ h* r++ y+++
------END GEEK CODE BLOCK------