Thread: How do I get the list of table names in db

How do I get the list of table names in db

From
James Andrews
Date:
I need to know how to get a list of table names that exist in a particular
database using Pg.  I know how to do it command line, but I need my scripts
to be able to do it for error checking, and I haven't found a single doc on
it.

-james

Re: [SQL] How do I get the list of table names in db

From
Maarten Boekhold
Date:
On Wed, 5 Aug 1998, James Andrews wrote:

> I need to know how to get a list of table names that exist in a particular
> database using Pg.  I know how to do it command line, but I need my scripts
> to be able to do it for error checking, and I haven't found a single doc on
> it.

select relname from pg_class where relkind='r' and relname !~ '^pg_'

relkind='r' gets all relations (tables) and relname!~'^pg_' excludes all
system tables.

Maarten

_____________________________________________________________________________
| TU Delft, The Netherlands, Faculty of Information Technology and Systems  |
|                   Department of Electrical Engineering                    |
|           Computer Architecture and Digital Technique section             |
|                          M.Boekhold@et.tudelft.nl                         |
-----------------------------------------------------------------------------


Re: [SQL] How do I get the list of table names in db

From
James Olin Oden
Date:
> I need to know how to get a list of table names that exist in a particular
> database using Pg.  I know how to do it command line, but I need my scripts
> to be able to do it for error checking, and I haven't found a single doc on
> it.
>
> -james

Well, here is one way.  In your script issue the command:

   psql -c "\d" -o filename database_name

depending on your scripting language you may need to wrap the command around
some other command such as:

   system ("psql -c \"\\d\" -o filename database_name");

in perl.  Now with this approach your script will then need to read in the file
created by the -o switch.  If your in perl you could do something like:

   open(COMMAND, "psql -c \"\\d\" database_name|")
   while (<COMMAND>)
   {
      print $_;
     <YOUR CODE GOES HERE>
   }

to not generate a file, and read in the standard output of the psql command.
In the the Korn shell you could do:


   psql -c "\d" database_name| while read LINE
   do
       echo $LINE
      <YOUR CODE GOES HERE>
   done

Hope this helps...james