Answers:
如果要数据库列表
SELECT datname FROM pg_database WHERE datistemplate = false;
如果要从所有数据库的当前pg安装中获取表列表
SELECT table_schema,table_name FROM information_schema.tables
ORDER BY table_schema,table_name;
试试这个:
SELECT table_name
FROM information_schema.tables
WHERE table_schema='public' AND table_type='BASE TABLE'
这个作品!
table_type='BASE TABLE'
。也许我错了,请您详细说明一下?
select
relname as table
from
pg_stat_user_tables
where schemaname = 'public'
select
tablename as table
from
pg_tables
where schemaname = 'public'
pg_stat_user_tables
如果track_activities
被禁用,则可能不会填充。使用“官方”的API,例如pg_tables
或者information_schema.table
是很多更好的选择。
SELECT table_name
FROM information_schema.tables
WHERE table_type='BASE TABLE'
AND table_schema='public';
对于MySQL,您需要table_schema ='dbName';对于MSSQL,则需要删除该条件。
请注意,“仅显示当前用户有权访问的那些表和视图”。另外,如果您可以访问许多数据库,并且希望将结果限制为某个数据库,则可以通过添加条件AND table_catalog ='yourDatabase'(在PostgreSQL中)来实现。
如果您还想摆脱显示行名的标题和显示行数的页脚,则可以使用命令行选项-t(仅--tuples-only的缩写)启动psql,也可以在psql的设置中进行切换命令行由\ t(\ pset tuples_only的缩写)。例如,当使用\ g [| command]将输出管道输送到另一个命令时,这可能很有用。