PostgreSQL:在PostgreSQL中显示表

PostgreSQL中的show tables(来自MySQL)等价于什么?

2419939 次浏览

psql命令行界面,

首先,选择您的数据库

\c database_name

然后,这显示了当前架构中的所有表:

\dt

以编程方式(或从psql接口,当然):

SELECT * FROM pg_catalog.pg_tables;

系统表位于pg_catalog数据库中。

(为了完整性)

您还可以查询(SQL标准)信息图式

SELECTtable_schema || '.' || table_nameFROMinformation_schema.tablesWHEREtable_type = 'BASE TABLE'ANDtable_schema NOT IN ('pg_catalog', 'information_schema');

以超级用户身份登录:

sudo -u postgres psql

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

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

使用-E标志运行psql将回显内部用于实现的查询\dt和类似:

sudo -u postgres psql -E
postgres=# \dt********* QUERY **********SELECT n.nspname as "Schema",c.relname as "Name",CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' END as "Type",pg_catalog.pg_get_userbyid(c.relowner) as "Owner"FROM pg_catalog.pg_class cLEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespaceWHERE c.relkind IN ('r','')AND n.nspname <> 'pg_catalog'AND n.nspname <> 'information_schema'AND n.nspname !~ '^pg_toast'AND pg_catalog.pg_table_is_visible(c.oid)ORDER BY 1,2;**************************

首先使用以下命令连接数据库

\c database_name

您将看到此消息-You are now connected to database database_name。他们运行以下命令

SELECT * FROM table_name;

在database_name和table_name只需更新数据库和表名

  1. 首次以postgres用户身份登录:

    sudo su - postgres

  2. 连接到所需的数据库:psql -d databaseName

  3. \dt将返回您连接到的数据库中所有表的列表。

您可以使用\dt列出当前数据库中的表。

Fwiw,\d tablename将显示有关给定表的详细信息,类似于MySQL中的show columns from tablename,但有更多信息。

如果您只想查看您创建的表列表,您只能说:

\dt

但我们也有PATTERN,它将帮助您自定义要显示的表。要显示所有包括pg_catalog架构的表,您可以添加*

\dt *

如果你这样做:\?

\dt[S+][PATTERN]列出表格

\dt(不需要*)--将列出您已经连接到的现有数据库的所有表。同样有用的是要注意:

\d[table_name]--将显示给定表的所有列,包括类型信息、引用和键约束。

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

使用只看到一个表

=> \dt

如果想查看架构表

=>\dt+

如果您想查看特定的模式表

=>\dt schema_name.*

如果您在PostgreSQL中使用pgAdmin4,您可以使用它来显示数据库中的表:

select * from information_schema.tables where table_schema='public';

首先,您可以使用mac上的postgre.app或postico与postgres数据库连接。运行以下命令:

psql -h localhost -p port_number -d database_name -U user_name -W

然后输入密码这应该能进入你的数据库

select*frompg_catalog.pg_tableswhereschemaname != 'information_schema'and schemaname != 'pg_catalog';

首先,您必须连接您的数据库,例如

我的数据库是ubuntu

使用此命令连接

 \c ubuntu

此消息将显示

“您现在以用户“postgres”连接到数据库“ubuntu”。”

现在

运行此命令以显示其中的所有表

\d+

您可以使用PostgreSQL的交互式终端Psql在PostgreSQL中显示表。

1.启动Psql

通常您可以运行以下命令进入psql:

psql DBNAME USERNAME

例如,psql template1 postgres

您可能遇到的一种情况是:假设您以root身份登录,并且您不记得库名。您可以通过运行以下命令首先进入Psql:

sudo -u postgres psql

在某些系统中,sudo命令不可用,您可以改为运行以下任一命令:

psql -U postgrespsql --username=postgres

2.展示表格

现在在Psql中,您可以运行以下命令:

  1. \?列出所有命令
  2. \l列出数据库
  3. \conninfo显示当前连接的信息
  4. \c [DBNAME]连接到新数据库,例如\c template1
  5. \dt列出公共模式的表
  6. \dt <schema-name>.*列出某些模式的表,例如\dt public.*
  7. \dt *.*列出所有模式的表
  8. 然后您可以运行SQL语句,例如SELECT * FROM my_table;(注意:语句必须以分号;结尾)
  9. \q退出psql

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

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

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

psql mydb

2)指定我想在\dt命令后查看表的模式名称,如下所示:

\dt myschema.*

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

               List of relationsSchema   |       Name      | Type  |  Owner----------+-----------------+-------+----------myschema | users           | table | postgresmyschema | activity        | table | postgresmyschema | roles           | table | postgres

使用psql:\dt

或:

SELECT c.relname AS Tables_in FROM pg_catalog.pg_class cLEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespaceWHERE pg_catalog.pg_table_is_visible(c.oid)AND c.relkind = 'r'AND relname NOT LIKE 'pg_%'ORDER BY 1

以超级用户身份登录,以便您可以检查所有数据库及其模式:-

sudo su - postgres

然后我们可以使用以下命令进入postgresql shell:-

psql

您现在可以使用以下命令检查所有数据库列表:-

\l

如果您想检查数据库的大小,请使用:-

\l+

q返回。

找到数据库后,现在可以使用以下命令连接到该数据库:-

\c database_name

连接后,您可以通过以下方式检查数据库表或模式:-

\d

现在回到shell使用:-

q

现在进一步查看某个表使用的详细信息:-

\d table_name

要返回postgresql_shell按\q

并返回终端按exit

要在psql中查看外部表,请运行\dE

作为一个快速的oneliner

# just list all the postgres tables sorted in the terminaldb='my_db_name'clear;psql -d $db -t -c '\dt'|cut -c 11-|perl -ne 's/^([a-z_0-9]*)( )(.*)/$1/; print'

或者如果你更喜欢更清晰的json输出多线:

IFS='' read -r -d '' sql_code <<"EOF_CODE"select array_to_json(array_agg(row_to_json(t))) from (SELECT table_catalog,table_schema,table_nameFROM information_schema.tablesORDER BY table_schema,table_name ) tEOF_CODEpsql -d postgres -t -q -c "$sql_code"|jq

根据我的口味,在命令行列出所有表的最直接方法是:

psql -a -U <user> -p <port> -h <server> -c "\dt"

对于给定的数据库,只需添加库名:

psql -a -U <user> -p <port> -h <server> -c "\dt" <database_name>

它适用于Linux和Windows。

这个SQLQuery适用于大多数PostgreSQL版本,相当简单。

select table_name from information_schema.tables where table_schema='public' ;
  1. 在登录后的PostgreSQL命令行界面中,键入以下命令以连接所需的数据库。

        \c [database_name]

然后您将看到此消息You are now connected to database "[database_name]"

  1. 键入以下命令以列出所有表。

        \dt

这些步骤对我有用PostgreSQL 13.3Windows 10

  1. 打开cmd并键入psql -a -U [username] -p [port] -h [server]
  2. 键入\c [database]以连接到数据库
  3. 键入\dt\d以显示所有表

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

show tables;

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

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

显示当前数据库的表列表

选择*从pg_catalog.pg_tables;