是否有任何查询可用来列出我的Postgres数据库中的所有表。
我尝试了这样一个问题:
SELECT table_name FROM information_schema.tables
WHERE table_schema='public'
但是这个查询也返回视图。
我怎么能得到只有表名,只有,而不是视图?
是否有任何查询可用来列出我的Postgres数据库中的所有表。
我尝试了这样一个问题:
SELECT table_name FROM information_schema.tables
WHERE table_schema='public'
但是这个查询也返回视图。
我怎么能得到只有表名,只有,而不是视图?
当前回答
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,或者你可以通过\t (\pset tuples_only的缩写)在psql的命令行中切换设置。这可能很有用,例如当使用\g[|命令]将输出输送到另一个命令时。
其他回答
试试这个:
SELECT table_name
FROM information_schema.tables
WHERE table_schema='public' AND table_type='BASE TABLE'
这个有用!
这个查询(基于手册中的描述)怎么样?
SELECT table_name
FROM information_schema.tables
WHERE table_schema='public'
AND table_type='BASE 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,或者你可以通过\t (\pset tuples_only的缩写)在psql的命令行中切换设置。这可能很有用,例如当使用\g[|命令]将输出输送到另一个命令时。
在psql中只给\dt怎么样?见https://www.postgresql.org/docs/current/static/app-psql.html。
打开postgres终端和你想要的数据库:
psql dbname (run this line in a terminal)
然后在postgres环境下执行该命令
\d
这将按名称描述所有表。基本上是一个按名称升序排列的表列表。
然后你可以尝试按字段描述一个表:
\d tablename.
希望这能有所帮助。