Answers:
在所有架构中:
=> \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节中的规定工作,但
.
如上所述,*
将所有特殊字符用作分隔符,将其转换为正则表达式符号.*
,将?
其转换为.
,并$
在字面上进行匹配。您可以通过编写?
for.
,(R+|)
forR*
或(R|)
for 来模拟这些模式字符R?
。$
不需要作为正则表达式字符,因为该模式必须与整个名称匹配,这与常规对正则表达式的解释不同(换句话说,$
会自动添加到您的图案中)。*
如果您不希望锚定图案,请在开头和/或结尾处写下。请注意,在双引号中,所有正则表达式特殊字符都会失去其特殊含义,并且会在字面上进行匹配。同样,正则表达式特殊字符在运算符名称模式(即的参数\do
)中按字面值进行匹配。
\dt public.user_info, public.user_scope
吗?
\dt public.a; \dt public.b;
一行即可完成。
search_path
,并且是默认"$user", public.*
。因此,set search_path=s; \dt
将列出架构中的所有表s
。
您可以从中选择表格 information_schema
SELECT * FROM information_schema.tables
WHERE table_schema = 'public'
可以替代information_schema
使用pg_tables
:
select * from pg_tables where schemaname='public';
SELECT tablename FROM pg_tables WHERE schemaname = 'public';
information_schema
没有列出public
架构中的项目,但是该pg_tables
方法很好用。非常感谢!
对于将来遇到这种情况的人:
如果您想查看几种模式的关系列表:
$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
\dt
等于\dt public.*
,对吗?