理解 psql 提示

Mal*_*umi 4 postgresql psql

postgres=#和 和有postgres-#什么区别?我尝试使用谷歌搜索并查看官方网站,但无法找到符号。

Col*_*art 6

psql三种不同的提示,来源

可以根据您的喜好自定义提示 psql 问题。三个变量PROMPT1PROMPT2PROMPT3包含描述提示外观的字符串和特殊转义序列。

  • 提示 1是 psql 请求新命令时发出的正常提示。

  • 当在命令输入期间需要更多输入时,会发出提示 2,例如因为命令没有以分号终止或引号没有关闭。

  • 当您运行SQL COPY FROM STDIN命令并且需要在终端上输入行值时,会发出提示 3

您可以\set在 PSQL 中查看默认值,或者在源代码中查看这里

#define DEFAULT_PROMPT1 "%/%R%# "
#define DEFAULT_PROMPT2 "%/%R%# "
#define DEFAULT_PROMPT3 ">> "
Run Code Online (Sandbox Code Playgroud)

这些都是格式字符串。它们在不同的提示级别呈现不同,从上面描述的来源%R

%R

  • 通常在提示 1 中=,但@如果会话位于条件块的非活动分支中,或者^处于单行模式,或者!会话与数据库断开连接(如果\connect失败,可能会发生这种情况)。
  • 提示 2 中 %R被替换为一个字符,这取决于为什么 psql 需要更多输入:-如果命令还没有终止,但是*如果有未完成的/* ... */注释,如果有未完成的引用字符串,则为单引号,如果为双引号,则为有一个未完成的引用标识符,如果有一个未完成的美元引用字符串,或者(如果有一个不匹配的左括号,则有一个美元符号。
  • 提示 3 %R中不产生任何东西。

所以你有它,%R根据提示级别进行更改。