PostgreSQL psql 常用命令
本文介绍了在 PostgreSQL 提供的 psql 工具中的常用的命令。
psql 工具是 PostgreSQL 提供的一个客户端程序。您能使用 psql 工具管理 PostgreSQL 数据库服务器。 本文整理了常用的 psql 命令,以便您能够更加有效的管理 PostgreSQL 数据库服务器。
连接 PostgreSQL
要使用 psql 工具管理 PostgreSQL 服务器,请先连接到 PostgreSQL 服务器。 命令如下:
psql -d dbname -U user -W
如果您需要连接一个远程的 PostgreSQL 服务器,请使用如下命令:
psql -h host -p port -d dbname -U user -W
其中:
-h
参数用于指定远程 PostgreSQL 服务器的主机名或者 IP 地址。 默认值为localhost
。-p
参数用于指定远程 PostgreSQL 服务器的端口号。默认值为 5432。
psql 常用命令
当您使用 psql 登录进 PostgreSQL 服务器以后,您就可以使用下面的命令管理服务器了。
列出所有的数据库
要列出当前 PostgreSQL 数据库服务器中的所有数据库,请使用 \l
或者 \l+
命令:
\l
或者
\l+
连接到数据库
连接数据库请使用 \c
或者 \connect
命令。
要使用当前用户连接到新的数据库,请使用如下命令:
\c dbname
要使用新的用户连接到当前数据库,请使用如下命令:
\c - username
您可以是用 \connect
替换上面命令中的 \c
,他们是等效的。
列出数据库中的表
要列出当前数据库中的表,请使用 \dt
或者 \dt+
命令:
\dt
或者
\dt+
显示表结构
要显示一个表的结构或定义,比如 列,约束等信息,请使用 \d
命令:
\d table_name
比如,要查看 product
表的结构,请使用如下命令:
\d product
testdb=# \d product
Table "public.product"
Column | Type | Collation | Nullable | Default
--------------+-------------------+-----------+----------+------------------------------
id | integer | | not null | generated always as identity
product_name | character varying | | not null |
attributes | hstore | | |
Indexes:
"product_pkey" PRIMARY KEY, btree (id)
列出可用模式
要列出当前连接的数据库的所有模式,请使用该 \dn
命令。
\dn
List of schemas
Name | Owner
--------+----------
public | postgres
列出可用的函数
要列出当前数据库中的可用函数,请使用该 \df
命令。
\df
List of functions
Schema | Name | Result data type | Argument data types | Type
--------+--------------------------+--------------------+---------------------------------------------------------+------
public | akeys | text[] | hstore | func
public | avals | text[] | hstore | func
public | defined | boolean | hstore, text | func
public | delete | hstore | hstore, hstore | func
public | delete | hstore | hstore, text | func
public | delete | hstore | hstore, text[] | func
public | each | SETOF record | hs hstore, OUT key text, OUT value text | func
public | exist | boolean | hstore, text | func
public | exists_all | boolean | hstore, text[] | func
public | exists_any | boolean | hstore, text[] | func
public | fetchval | text | hstore, text | func
public | ghstore_compress | internal | internal | func
public | ghstore_consistent | boolean | internal, hstore, smallint, oid, internal | func
public | ghstore_decompress | internal | internal | func
public | ghstore_in | ghstore | cstring | func
public | ghstore_options | void | internal | func
public | ghstore_out | cstring | ghstore | func
public | ghstore_penalty | internal | internal, internal, internal | func
public | ghstore_picksplit | internal | internal, internal | func
public | ghstore_same | internal | ghstore, ghstore, internal | func
public | ghstore_union | ghstore | internal, internal | func
public | gin_consistent_hstore | boolean | internal, smallint, hstore, integer, internal, internal | func
public | gin_extract_hstore | internal | hstore, internal | func
public | gin_extract_hstore_query | internal | hstore, internal, smallint, internal, internal | func
public | hs_concat | hstore | hstore, hstore | func
public | hs_contained | boolean | hstore, hstore | func
public | hs_contains | boolean | hstore, hstore | func
public | hstore | hstore | record | func
public | hstore | hstore | text, text | func
public | hstore | hstore | text[] | func
public | hstore | hstore | text[], text[] | func
public | hstore_cmp | integer | hstore, hstore | func
public | hstore_eq | boolean | hstore, hstore | func
public | hstore_ge | boolean | hstore, hstore | func
public | hstore_gt | boolean | hstore, hstore | func
public | hstore_hash | integer | hstore | func
public | hstore_hash_extended | bigint | hstore, bigint | func
public | hstore_in | hstore | cstring | func
public | hstore_le | boolean | hstore, hstore | func
public | hstore_lt | boolean | hstore, hstore | func
public | hstore_ne | boolean | hstore, hstore | func
public | hstore_out | cstring | hstore | func
public | hstore_recv | hstore | internal | func
public | hstore_send | bytea | hstore | func
public | hstore_subscript_handler | internal | internal | func
public | hstore_to_array | text[] | hstore | func
public | hstore_to_json | json | hstore | func
public | hstore_to_json_loose | json | hstore | func
public | hstore_to_jsonb | jsonb | hstore | func
public | hstore_to_jsonb_loose | jsonb | hstore | func
public | hstore_to_matrix | text[] | hstore | func
public | hstore_version_diag | integer | hstore | func
public | isdefined | boolean | hstore, text | func
public | isexists | boolean | hstore, text | func
public | my_time_multirange | my_time_multirange | | func
public | my_time_multirange | my_time_multirange | VARIADIC my_time_range[] | func
public | my_time_multirange | my_time_multirange | my_time_range | func
public | my_time_range | my_time_range | time without time zone, time without time zone | func
public | my_time_range | my_time_range | time without time zone, time without time zone, text | func
public | populate_record | anyelement | anyelement, hstore | func
public | skeys | SETOF text | hstore | func
public | slice | hstore | hstore, text[] | func
public | slice_array | text[] | hstore, text[] | func
public | svals | SETOF text | hstore | func
public | tconvert | hstore | text, text | func
(65 rows)
列出可用视图
要列出当前数据库中的可用视图,请使用该 \dv
命令。
\dv
列出用户及其角色
要列出所有用户及其分配的角色,请使用 \du
命令:
\du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
开启查询执行时间
要打开查询执行时间,请使用该 \timing
命令。
\timing
select * from product;
id | product_name | attributes
----+--------------+--------------------------------------------------------------
2 | Shirt B | "Color"=>"White", "Style"=>"Business", "Season"=>"Spring"
1 | Computer A | "CPU"=>"2.5", "Disk"=>"1T", "Brand"=>"Dell", "Memory"=>"16G"
(2 rows)
Time: 0.281 ms
当您再次运行 \timing
命令,则会关闭查询执行时间。
查看命令历史
要显示命令历史记录,请使用该 \s
命令。
\s
如果要将命令历史保存到文件中,则需要在 \s
命令后指定文件名 ,如下所示:
\s filename
执行上一条命令
要想执行最近的一条命令, 请使用 \g
命令:
\g
\g
可让你避免重新输入上一条命令。
获取 SQL 命令的帮助
要获取 SQL 命令的说明,请使用 \h
命令,如下:
\h sql_command
比如,要获取 TRUNCATE
的帮助说明,请使用如下的命令:
\h TRUNCATE
Command: TRUNCATE
Description: empty a table or set of tables
Syntax:
TRUNCATE [ TABLE ] [ ONLY ] name [ * ] [, ... ]
[ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]
URL: https://www.postgresql.org/docs/14/sql-truncate.html
获取 psql 的帮助
要了解 psql 命令的详细用法,请使用 \?
命令
\?
从文件中执行 psql 命令
如果要从文件执行 psql 命令,请 \i
按如下方式使用命令:
\i filename
打开扩展显示
要为 SELECT
语句的结果集打开扩展显示,请使用 \x
命令。
\x
select * from product;
-[ RECORD 1 ]+-------------------------------------------------------------
id | 2
product_name | Shirt B
attributes | "Color"=>"White", "Style"=>"Business", "Season"=>"Spring"
-[ RECORD 2 ]+-------------------------------------------------------------
id | 1
product_name | Computer A
attributes | "CPU"=>"2.5", "Disk"=>"1T", "Brand"=>"Dell", "Memory"=>"16G"
扩展显示对于显示那些很长的列很有帮助。
如果您再次运行 \x
命令。则回关闭扩展显示。
退出 psql
要退出 psql,您可以使用 \q
命令并按下 enter
退出 psql。
\q
结论
本文向您展示了 psql 工具的常用的命令。