Skip to content

Latest commit

 

History

History
67 lines (50 loc) · 1.7 KB

psql shortcuts.md

File metadata and controls

67 lines (50 loc) · 1.7 KB

psql shortcuts

我每天都会发布一篇新的 PostgreSQL "howto" 文章。加入我的旅程吧 — 订阅、提供反馈、分享!

在我的工具 postgres_dba 中,安装命令包含:

printf "%s %s %s %s\n" \\set dba \'\\\\i $(pwd)/start.psql\' >> ~/.psqlrc

这种方式可以让我们在 psql 中只需输入 :dba 即可调用 start.psql,而且该命令在 bashzsh 中均有效 (macOS 几年前将默认 shell 更改为 zsh,而 bash 通常是 Linux 发行版的默认 shell)。

我们可以很容易地在 .psqlrc 中添加自己的指令,以定义各种便捷的快捷键。比如:

\set pid 'select pg_backend_pid() as pid;'
\set prim 'select not pg_is_in_recovery() as is_primary;'
\set a 'select state, count(*) from pg_stat_activity where pid <> pg_backend_pid() group by 1 order by 1;'

👉 这添加了简便的快捷方式:

  1. 当前 PID:
nik=# :pid
  pid
--------
 513553
(1 row)
  1. 判断是否为主节点?
nik=# :prim
 is_primary
------------
 t
(1 row)
  1. 简单活动摘要
nik=# :a
        state        | count
---------------------+-------
 active              |    19
 idle                |   193
 idle in transaction |     2
                     |     7
(4 rows)

在 SQL 上下文中,可以使用下面这种有趣的语法,将当前设置的 psql 变量值作为字符串进行传递:

nik=# select :'pid';
            ?column?
---------------------------------
 select pg_backend_pid() as pid;
(1 row)

在编写脚本时,不要忘了使用 -X (--no-psqlrc)选项,以确保 .psqlrc 中的内容不会影响脚本的逻辑。