在使用psql
与set
与\set
之间使用\pset
时,我有时会感到困惑。我认为:
set
用于连接到db的会话变量。例如SET ROLE dba
; \set
用于此psql会话的本地变量。例如\set time 'select current_timestamp'
\pset
用于此psql会话的psql设置。例如'\pset border 2'
但是,我从来没有发现我认为对每个人都有好的解释。我的假设是否正确?
我正在使用PostgreSQL 9.4
答案 0 :(得分:11)
基本上是正确的。重要的区别是SET
是一个SQL命令,而另外两个是psql元命令 - 由前缀\
表示。
SET
是一个用于更改运行时参数的SQL命令。它在服务器上执行,与psql本身无关。
\set
是一个psql元命令,per documentation:
将psql变量名称设置为值[...]
注意:此命令与SQL命令
SET
无关。
\pset
是另一个psql元命令。 Per documentation:
此命令设置影响查询结果表输出的选项