在PostgreSQL模式列表表(List tables in a PostgreSQL schem

2019-07-23 14:14发布

当我做了\dt在psql里我只得到在当前模式表(一上市public默认情况下)。

我怎样才能在所有架构或特定模式中的所有表的列表?

Answer 1:

在所有模式:

=> \dt *.*

在一个特定的模式:

=> \dt public.*

它可以使用正则表达式有一些限制条件

\dt (public|s).(s|t)
       List of relations
 Schema | Name | Type  | Owner 
--------+------+-------+-------
 public | s    | table | cpn
 public | t    | table | cpn
 s      | t    | table | cpn

高级用户可以使用正则表达式的符号如字符类,例如[0-9],以匹配任何数字。 如第9.7.3规定,除所有正则表达式特殊字符的工作。 将其作为被转换为正则表达式表示法如上述那样的隔板,*。 ,? 它被传递给。和$这是字面匹配。 您可以通过编写模仿不需要这些模式字符? 为,(R + |)为R,或(R |)为R 4。 $不需要作为一个正则表达式角色,因为这个模式必须与全名相匹配,不像正则表达式的通常解释(换句话说,$将自动添加到您的模式)。 写*在开始和/或结束,如果你不希望被固定的模式。 需要注意的是双引号内,所有正则表达式特殊字符失去其特殊的含义,并从字面上匹配。 此外,正则表达式特殊字符在运营商名称模式匹配字面上(即\的说法做)。



Answer 2:

您可以选择从表中information_schema

SELECT * FROM information_schema.tables 
WHERE table_schema = 'public'


Answer 3:

另外,以information_schema也可以使用pg_tables

select * from pg_tables where schemaname='public';


Answer 4:

对于那些跨越这个未来的未来:

如果你想看到几个模式的关系的列表:

$psql mydatabase
mydatabase=# SET search_path TO public, usa;   #schema examples
SET
mydatabase=# \dt
              List of relations
 Schema |      Name       | Type  |  Owner
--------+-----------------+-------+----------
 public | counties        | table | postgres
 public | spatial_ref_sys | table | postgres
 public | states          | table | postgres
 public | us_cities       | table | postgres
 usa    | census2010      | table | postgres


文章来源: List tables in a PostgreSQL schema