如何自定义PostgreSQL/psql提示符?

问题描述 投票:0回答:2

如何在 PostgreSQL 命令行工具 psql 中自定义提示符(最好是在每个用户的启动脚本中)?

特别是,我希望能够更改它,同时仍然包括指示命令是否为多行的字符(例如

=
-
'
等)。

我正在运行 Ubuntu 10.04 (Lucid), PostgreSQL 8.4.4.

postgresql command-line customization
2个回答
20
投票

您当然可以自定义提示。

来自文档:

提示psql问题即可 根据您的喜好定制。这 三个变量

PROMPT1
PROMPT2
,和
PROMPT3
包含字符串和特殊 描述的转义序列 提示的出现。提示1是 发出时的正常提示 psql 请求一个新命令。提示 2 当需要更多输入时发出 在命令输入期间,因为 命令没有终止 分号或引号未结束。 当您运行
SQL COPY
命令时会发出提示 3,您应该 在 终端。

如果你想在每个用户的基础上设置提示,你可以将

\set
命令添加到用户的
.psqlrc
文件中。

所以,你的

$HOME/.psqlrc
会是这样的:

\set PROMPT1 '(%n@%M:%>) %`date +%H:%M:%S` [%/] \n%x%# '

0
投票

你也可以在命令行自定义提示,如果你不能设置一个

$HOME/.psqlrc
文件(例如炮击到一个你不控制的容器)

$ PROMPT1="PROMPT1='%[%033[1;31;40m%]%/%R%[%033[0m%]%# '" 
$ psql -v $PROMPT1

或者如果你通过 kubectl 连接到容器,你可以这样做:

  POD=$(getPodThatHasPostgresCli)
  PSQL_PATH="./pgsql/bin/"
  PROMPT1="PROMPT1='%[%033[1;31;40m%]%/%R%[%033[0m%]%# '" 
  CMD="export PGPASSWORD='$PGPASS'; $PSQL_PATH/psql -v $PROMPT1 $PGURL -U $PGUSER $*"
  
  if ! kubectl exec -it "$POD" -- /bin/bash -c "$CMD"
  then
    echo "failed to connect to psql in pod"
    exit 1;
  fi
© www.soinside.com 2019 - 2024. All rights reserved.