在PostgreSQL中显示表(来自MySQL)的等价物是什么?


当前回答

\dt将列出表,\pset pager off将在同一窗口中显示它们,而不切换到单独的窗口。喜欢dbshell中的那个功能。

其他回答

以超级用户身份登录:

sudo -u postgres psql

您可以通过\l命令列出所有数据库和用户,(通过\?列出其他命令)。

现在,如果您想查看其他数据库,可以通过\c命令(如\c template1、\c postgres postgress)更改用户/数据库,并使用\d、\dt或\dS查看表/视图等。

select 
  * 
from 
  pg_catalog.pg_tables 
where 
  schemaname != 'information_schema' 
  and schemaname != 'pg_catalog';

从psql命令行界面,

首先,选择数据库

\c database_name

然后,这将显示当前模式中的所有表:

\dt

编程(当然也可以从psql接口):

SELECT * FROM pg_catalog.pg_tables;

系统表位于pg_catalog数据库中。

请注意,仅\dt将列出您正在使用的数据库的公共模式中的表。我喜欢将表保存在单独的模式中,因此接受的答案对我来说不起作用。

要列出特定模式中的所有表,我需要:

1) 连接到所需的数据库:

psql mydb

2) 指定要在\dt命令后查看表的架构名称,如下所示:

\dt myschema.*

这显示了我感兴趣的结果:

               List of relations
 Schema   |       Name      | Type  |  Owner   
----------+-----------------+-------+----------
 myschema | users           | table | postgres
 myschema | activity        | table | postgres
 myschema | roles           | table | postgres

(MySQL)显示当前数据库的表列表

show tables;

(PostgreSQL)显示当前数据库的表列表

select * from pg_catalog.pg_tables where schemaname='public';