Обсуждение: How do I get the list of table names in db
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
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 | -----------------------------------------------------------------------------
> 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