psql 中 set、\set 和 \pset 的区别
Difference between set, \set and \pset in psql
在使用 psql
时,我有时会在何时使用 set
与 \set
与 \pset
之间感到困惑。我认为:
set
用于我与数据库的连接上的会话变量。例如 SET ROLE dba
;
\set
用于此 psql 会话的局部变量。例如\set time 'select current_timestamp'
\pset
用于此 psql 会话的 psql 设置。例如'\pset border 2'
但是,我从来没有找到我认为对每一个都很好的解释。我的上述假设是否正确?
我正在使用 PostgreSQL 9.4
基本正确。重要的区别在于 SET
是一个 SQL 命令,而其他两个是 psql 元命令 - 由前导 \
.
指示
SET
是一个 SQL 命令来改变 运行 时间参数。它在服务器上执行,与 psql 本身无关。
\set
是一个 psql 元命令:
Sets the psql variable name to value [...]
Note: This command is unrelated to the SQL command SET
.
\pset
是另一个 psql 元命令:
This command sets options affecting the output of query result tables
在使用 psql
时,我有时会在何时使用 set
与 \set
与 \pset
之间感到困惑。我认为:
set
用于我与数据库的连接上的会话变量。例如SET ROLE dba
;\set
用于此 psql 会话的局部变量。例如\set time 'select current_timestamp'
\pset
用于此 psql 会话的 psql 设置。例如'\pset border 2'
但是,我从来没有找到我认为对每一个都很好的解释。我的上述假设是否正确?
我正在使用 PostgreSQL 9.4
基本正确。重要的区别在于 SET
是一个 SQL 命令,而其他两个是 psql 元命令 - 由前导 \
.
SET
是一个 SQL 命令来改变 运行 时间参数。它在服务器上执行,与 psql 本身无关。
\set
是一个 psql 元命令:
Sets the psql variable name to value [...]
Note: This command is unrelated to the SQL command
SET
.
\pset
是另一个 psql 元命令:
This command sets options affecting the output of query result tables