Re: Retrieving a list of tables

From: Alessandro Ferrarin <ferrarin(at)tieffesistemi(dot)com>
To: "David C(dot) Brown" <dbrown(at)centennialwines(dot)com>
Cc: pgsql-php(at)postgresql(dot)org
Subject: Re: Retrieving a list of tables
Date: 2001-10-17 09:08:32
Message-ID: 20011017110832.A1052@tieffesistemi.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-php

On Tue, Oct 16, 2001 at 03:09:13PM -0500, David C. Brown wrote:
> Heyas,
>
> I need to be able to get a list of the tables from a postgresql from
> php. I'm
> porting a php-mysql website over to postgresql. I have a form that
> populates
> a <SELECT> statment with the tables in the db.
>
> In Mysql I just used the sql query "SHOW TABLES;" postgresql doesn't
> support that sql statment, and pg-php doesn't like me sending a "\d" as
> a
> query.
>
> Anyone have any help, or ideas how I may be able to work around this?
> or is there a query for pg-sql that I don't know about?
>
> Any and all help would be great... Thanx
>
> Dave

The right way to get that (with Owner and Encoding type), is querying:

SELECT pg_database.datname as "Database",
pg_user.usename as "Owner",
pg_encoding_to_char(pg_database.encoding) as "Encoding"FROM pg_database, pg_user
WHERE pg_database.datdba = pg_user.usesysid

UNION

SELECT pg_database.datname as "Database",
NULL as "Owner",
pg_encoding_to_char(pg_database.encoding) as "Encoding"FROM pg_database
WHERE pg_database.datdba NOT IN (SELECT usesysid FROM pg_user)
ORDER BY "Database";

Postgres uses some "internal" tables to store data. You can query them as
you want just for reading (I suppose).
If you start the terminal-based front-end psql like this

psql -E

you obtain: (from man page):
-E, --echo-hidden
Echoes the actual queries generated by \d and other backslash com-
mands. You can use this if you wish to include similar function-
ality into your own programs. This is equivalent to setting the
variable ECHO_HIDDEN from within psql.

Try it.

Bye - Alessandro

P.S. I encountered the problem you ask making a php-pgsql-browser...
--
+-----------------------------------------------------------------------+
Alessandro Ferrarin ferrarin(at)tieffesistemi(dot)com
Tieffe Sistemi s.r.l. www.tieffesistemi.com
V.le Piceno 21 - 20129 Milano - Italia tel/fax +39 02 76115215
+-----------------------------------------------------------------------+

In response to

Browse pgsql-php by date

  From Date Subject
Next Message Johnny Jørgensen 2001-10-17 13:27:17 last OID and connections?
Previous Message Duncan Adams (DNS) 2001-10-17 08:58:58 Re: Retrieving a list of tables