Search Postgresql Archives

Re: table column information

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Scot L. Harris wrote:
Currently using Postgresql 7.2.4-5.80 with php 4.2.2.-8.0.8 on a redhat
8.0 system.

I am writing some php scripts where I want to generate a list of the
column names in a particular table that the user selects.  I could take
the brute force method and hard code the column names but then every
time I add a new table or modify an existing one I would have to modify
the code.  What I want is to have a generic function that given the
table name it will pull the column names for my use.

I need to get the table column names for several tables I have setup. I
know if I do a select * from tablename I can then use the pg_fieldname
function to pull the column names for all columns.


But I don't think I want to select the entire contents of the table
every time I want to get the names of the columns. I know this will
work but I think performance will be very poor.


Trying to find something the equivalent of doing a \d tablename in psql.


I did see a function to pull meta data but that is in a 4.3 version of
php.


I have also been trying to track down some information on the pga_layout
table.  This appears to be a system table that might contain the
information I want but it does not list every table I have created.  Not
sure what that is.

The books I have do not say much if anything about such system tables.

Any help or pointers would be appreciated.


Hi,


You want to be querying the postgres catalog tables. See here for more info:

http://www.postgresql.org/docs/7.2/static/catalogs.html

The tables you want to look at are pg_class and pg_attribute. You will want to query pg_class to get the oid of the table. Then you can query pg_attribute using that oid to get the column names and types. This is all the \d tablename does in psql, send a query to the db.

I cant remember exactly what you need to do but you can find out what query psql sends to the backend by adding the -E parameter. For example:

psql -d tesdb -E

Then whenever psql fires off a query you can see it. So you could do:

psql -d testdb -R

testdb> \d sometable

And you will see what the query that you would need to execute to get the column names ;-)

HTH


Nick


---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

http://archives.postgresql.org

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux