psql中set,\ set和\ pset之间的区别

时间:2015-04-12 19:50:48

标签: postgresql psql postgresql-9.4

在使用psqlset\set之间使用\pset时,我有时会感到困惑。我认为:

  • set用于连接到db的会话变量。例如SET ROLE dba;
  • \set用于此psql会话的本地变量。例如\set time 'select current_timestamp'
  • \pset用于此psql会话的psql设置。例如'\pset border 2'

但是,我从来没有发现我认为对每个人都有好的解释。我的假设是否正确?

我正在使用PostgreSQL 9.4

1 个答案:

答案 0 :(得分:11)

基本上是正确的。重要的区别是SET是一个SQL命令,而另外两个是psql元命令 - 由前缀\表示。

  • SET是一个用于更改运行时参数的SQL命令。它在服务器上执行,与psql本身无关。

  • \set是一个psql元命令,per documentation

      

    将psql变量名称设置为值[...]

         

    注意:此命令与SQL命令SET无关。

  • \pset是另一个psql元命令。 Per documentation

      

    此命令设置影响查询结果表输出的选项