在PostgreSQL模式中列出表格

当我在psql中做一个\dt ,我只能得到当前模式中的表的列表(默认是public的)。

我如何获得所有模式或特定模式中的所有表的列表?

在所有模式中:

 => \dt *.* 

在特定的模式中:

 => \dt public.* 

有一些限制可以使用正则expression式

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

高级用户可以使用正则expression式符号,如字符类,例如[0-9]来匹配任何数字。 所有正则expression式特殊字符都按9.7.3节的规定工作,除了。 如上所述作为分隔符,*被翻译成正则expression式符号。 ,? 它被翻译成。,而$是从字面上匹配的。 你可以通过写作来模仿这些模式字符? 对于R,(R + |)对于R ,或(R |)对于R 1。 $不需要作为正则expression式字符,因为模式必须匹配整个名称,而不像正常expression式的正常解释(换句话说,$会自动附加到模式中)。 在开始和/或结束时写*,如果你不希望模式被锚定。 请注意,在双引号内,所有正则expression式特殊字符都会失去其特殊含义,并且按字面顺序匹配。 另外,正则expression式特殊字符在操作符名称模式(即\ do的参数)中被逐字地匹配。

您可以从information_schemaselect表格

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

information_schema也可以使用pg_tables

 select * from pg_tables where schemaname='public';