如何在PostgreSQL的psql客户端中获取select字段的变量

如何在PostgreSQL的psql客户端中获取select字段的变量,postgresql,psql,Postgresql,Psql,在psql客户端中:运行 选择pg\u backend\u pid()ospid\gset \echo:ospid 这可以得到ospid值 但是:我想把echo ospid col值归档 \!echo'a':ospid'b'>/tmp/test.log 我怎样才能修好它? 谢谢。正如上面所说: 与大多数其他元命令不同,该行的整个剩余部分始终被视为\的参数,并且在参数中既不执行变量插值也不执行反引号扩展 您可以使用\g: test=> \pset format unaligned Outpu

在psql客户端中:运行

选择pg\u backend\u pid()ospid\gset

\echo:ospid

这可以得到ospid值

但是:我想把echo ospid col值归档

\!echo'a':ospid'b'>/tmp/test.log

我怎样才能修好它? 谢谢。

正如上面所说:

与大多数其他元命令不同,该行的整个剩余部分始终被视为
\的参数,并且在参数中既不执行变量插值也不执行反引号扩展

您可以使用
\g

test=> \pset format unaligned
Output format is unaligned.
test=> \pset tuples_only
Tuples only is on.
test=> SELECT pg_backend_pid() ospid \gset
test=> SELECT 'a ' || :ospid  || ' b' \g /tmp/test.log
谢谢@Laurenz Albe

我的目标是设置终端标题

我在处理这个问题

\pset tuples_only on
\pset border 0

SELECT user,pg_backend_pid() ospid  \g  ./_ospid.log

\echo '******** ospid:=[':ospid']   user:=[':user']********'

\! echo -ne '\033]0;'`cat ./_ospid.log`'\007' ;


\pset tuples_only off
\pset border 2