当我做了\dt
在psql里我只得到在当前模式表(一上市public
默认情况下)。
我怎样才能在所有架构或特定模式中的所有表的列表?
当我做了\dt
在psql里我只得到在当前模式表(一上市public
默认情况下)。
我怎样才能在所有架构或特定模式中的所有表的列表?
在所有模式:
=> \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。 $不需要作为一个正则表达式角色,因为这个模式必须与全名相匹配,不像正则表达式的通常解释(换句话说,$将自动添加到您的模式)。 写*在开始和/或结束,如果你不希望被固定的模式。 需要注意的是双引号内,所有正则表达式特殊字符失去其特殊的含义,并从字面上匹配。 此外,正则表达式特殊字符在运营商名称模式匹配字面上(即\的说法做)。
您可以选择从表中information_schema
SELECT * FROM information_schema.tables
WHERE table_schema = 'public'
另外,以information_schema
也可以使用pg_tables
:
select * from pg_tables where schemaname='public';
对于那些跨越这个未来的未来:
如果你想看到几个模式的关系的列表:
$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