I get a little confused some times when working with psql between when to use a set vs. \set vs. \pset. I think that:
setis for session variables on my connection to the db. For exampleSET ROLE dba;\setis for local variables for this psql session. For example\set time 'select current_timestamp'\psetis for psql settings for this psql session. For example'\pset border 2'
But, I've never found what I thought was a good explanation of each. Are my assumptions above correct?
I'm using PostgreSQL 9.4
Basically correct. The important difference is that SET is an SQL command while the other two are psql meta-commands - indicated by the prefixed \.
SETis an SQL command to change run-time parameters. It is executed on the server and has nothing to do with psql per se.\setis a psql meta-command and, per documentation:Sets the psql variable name to value [...]
Note: This command is unrelated to the SQL command
SET.\psetis another psql meta-command. Per documentation:This command sets options affecting the output of query result tables
来源:https://stackoverflow.com/questions/29593908/difference-between-set-set-and-pset-in-psql