PostgreSQL 12: psql 命令增强

PostgreSQL 12 的 psql 命令在功能上整体变化不大,在以下几方面小辐增强,详见以下发行说明。

发行说明

  • Add CSV table output mode in psql (Daniel Vérité)
    This is controlled by \pset format csv or the command-line –csv option.
  • Show the manual page URL in psql’s \help output (Peter Eisentraut)
  • Display the IP address in psql’s \conninfo (Fabien Coelho)
  • Improve tab completion of CREATE TABLE, CREATE TRIGGER, CREATE EVENT TRIGGER, ANALYZE, EXPLAIN, VACUUM, ALTER TABLE, ALTER INDEX, ALTER DATABASE, ALTER INDEX ALTER COLUMN (Dagfinn Ilmari Manns?ker, Tatsuro Yamada, Micha?l Paquier, Tom Lane, Justin Pryzby)

本文演示下。

psql 增加 CSV table 输出格式

11 版本 PostgreSQL 的 ‘psql’ 命令支持的输出格式包括以下:

  • aligned
  • asciidoc
  • csv
  • html
  • latex
  • latex-longtable
  • troff-ms
  • unaligned
  • wrapped.

默认的输出格式为 aligned,aligned 是一种标准的可读性较好的本文格式,12 版本的 psql 增加了 csv table 输出格式。

首先看默认的输出格式,如下:

1
2
3
4
5
6
7
mydb=> SELECT oid,relname FROM pg_class LIMIT 3;
oid | relname
-------+-------------
16392 | userinfo
16398 | userinfo_p1
16401 | userinfo_p2
(3 rows)

设置输出格式为 csv,如下:

1
2
3
4
5
6
7
8
mydb=> \pset format csv
Output format is csv.

mydb=> SELECT oid,relname FROM pg_class LIMIT 3;
oid,relname
16392,userinfo
16398,userinfo_p1
16401,userinfo_p2

csv 输出格式默认的分隔符号为逗号,可以设置成其它分隔符,设置分隔符为 tab 键,如下:

1
2
3
4
5
6
7
8
mydb=> \pset csv_fieldsep '\t'
Field separator for CSV is " ".

mydb=> SELECT oid,relname FROM pg_class LIMIT 3;
oid relname
16392 userinfo
16398 userinfo_p1
16401 userinfo_p2

Help 命令输出手册URL地址

之前版本 ‘psql’ 的 help 命令不会显示对应的手册URL地址,12 版本会显示这块内容,如下:

1
2
3
4
5
6
7
8
9
10
11
12
mydb=> \h CREATE SEQUENCE
Command: CREATE SEQUENCE
Description: define a new sequence generator
Syntax:
CREATE [ TEMPORARY | TEMP ] SEQUENCE [ IF NOT EXISTS ] name
[ AS data_type ]
[ INCREMENT [ BY ] increment ]
[ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
[ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]
[ OWNED BY { table_name.column_name | NONE } ]

URL: https://www.postgresql.org/docs/12/sql-createsequence.html

\conninfo 显示IP地址信息

12 版本的 ‘psql’ 的 ‘\conninfo’ 命令增加了数据库连接串IP地址信息的输出,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[pg12@pghost1 ~]$ psql -h 192.168.2.12 mydb pguser
Password for user pguser:
psql (12beta2)
Type "help" for help.

mydb=> \conninfo
You are connected to database "mydb" as user "pguser" on host "192.168.2.12" at port "1921".
mydb=> \q

[pg12@pghost1 ~]$ psql -h pghost2 mydb pguser
Password for user pguser:
psql (12beta2)
Type "help" for help.

mydb=> \conninfo
You are connected to database "mydb" as user "pguser" on host "pghost2" (address "192.168.2.12") at port "1921".

Tab 命令补齐功能增强

12 版本的 ‘psql’ 另一改进是对 CREATE TABLE, CREATE TRIGGER, CREATE EVENT TRIGGER, ANALYZE, EXPLAIN, VACUUM, ALTER TABLE, ALTER INDEX, ALTER DATABASE, ALTER INDEX ALTER COLUMN 命令 tab 键补齐功能进行了增强,这里不做演示。

参考

最后推荐和张文升共同编写的《PostgreSQL实战》,本书基于PostgreSQL 10 编写,共18章,重点介绍SQL高级特性、并行查询、分区表、物理复制、逻辑复制、备份恢复、高可用、性能优化、PostGIS等,涵盖大量实战用例!

购买链接:https://item.jd.com/12405774.html

PostgreSQL实战
感谢支持!
0%