如何在Ubuntu14.04上使用psqlrc自定义PostgreSQL提示

来自菜鸟教程
跳转至:导航、​搜索

介绍

psqlrc 文件自定义 psql 交互式命令行客户端的行为。 psql 使您能够以交互方式输入查询,将它们发送到 PostgreSQL,并查看查询结果。 该文件有三种风格:

  1. 系统范围的 psqlrc 文件位于 PostgreSQL 的系统配置目录中。

此目录的位置取决于您的 PostgreSQL 安装,但可以使用 pg_config 工具找到。

pg_config --sysconfdir
  1. 可以在用户的主目录中找到或创建用户 psqlrc 文件。
touch ~/.psqlrc
  1. 如果有多个 PostgreSQL 安装,则可以创建特定于版本的 psqlrc 文件。 只需将版本号添加到末尾即可。
touch ~/.psqlrc-9.1
touch ~/.psqlrc-9.3

安装

在您可以使用 psql 之前,您必须安装 PostgreSQL。

sudo apt-get install -y postgresql postgresql-contrib

这将安装 PostgreSQL 9.3。 现在您可以切换到 postgres 用户并启动 psql。

su - postgres

psql

这应该显示标准的 psql 提示符。

psql (9.3.4)
Type "help" for help.

postgres=#

编辑提示

通过编辑用户 psqlrc 文件,您可以自定义主 psql 提示符 (PROMPT1) 并创建有用的快捷方式。 使用您选择的编辑器编辑 .psqlrc 文件以添加以下行(这里我们将使用 vim)。

vi ~/.psqlrc

\set PROMPT1 '%M:%> %n@%/%R%#%x '
  • %M 指数据库服务器的主机名——如果连接是通过 Unix 域套接字,则为“[local]”
  • %> 指监听端口
  • %n 指会话用户名
  • %/ 引用当前数据库
  • %R 是指您是处于单线模式 (^) 还是断开连接 (!) 但通常 =
  • %# r 表示您是超级用户 (#) 还是普通用户 (>)
  • %x 指交易状态——通常为空白,除非在交易块中 (*)

如果以用户“john”的身份登录到主机名为“trident”的机器并以普通用户身份访问数据库“orange”,你会看到

[trident]:5432 john@orange=>

您还可以编辑辅助 psql 提示符 (PROMPT2)。

postgres-#

当您有未完成的查询时,您将遇到辅助提示。

postgres=# select * from
postgres-# peel limit 1;

编辑辅助 psql 提示与编辑主要 psql 提示大多相似。

\set PROMPT2 '%M %n@%/%R %# '
  • %R 用 '-' 代替 '=' 表示

当在主机名“trident”作为用户“john”并以普通用户访问数据库“orange”的机器上进行事务时,您会看到

[trident]:5432 john@orange=> select * from
[trident] john@orange-> peel limit 1;

当然,您可以添加、删除或重新排列这些选项以包含对您有用的信息。

颜色

可以使用 psqlrc 编辑提示颜色。 要使端口号变为红色,请添加以下内容。

\set PROMPT1 '%M:%[%033[1;31m%]%>%[%033[0m%] %n@%/%R%#%x '

您可以使用多种颜色 - 将值 31 更改为:

  • 32 为绿色
  • 33 代表黄色
  • 34 为蓝色
  • 35 为洋红色
  • 36 代表青色
  • 37 为白色

显示选项

查询 PostgreSQL 数据库时,空值返回空白。 相反,如果您希望它返回值 NULL,则可以编辑 null 选项。

\pset null '[null]'

要将诸如“SELECT”和“FROM”之类的 SQL 关键字完成为大写或小写,您可以将 COMP_KEYWORD_CASE 选项设置为选项大写或小写。

\set COMP_KEYWORD_CASE upper

要使用启用时间选项让所有查询显示查询时间。

\timing

与 bash 提示符一样,在 psql 提示符下,您可以按向上箭头键通过历史记录访问以前执行的命令。 要设置历史的大小,您可以编辑 HISTSIZE。

\set HISTSIZE 2000

查询大型表时,有时输出会呈现难以阅读的文本。 您可以切换到扩展表格格式。

\x auto

您还可以使用“默认”、“详细”或“简洁”选项设置错误报告的详细程度。

\set VERBOSITY verbose

您也可以使用 set 命令设置快捷方式。 如果您想设置查看 PostgreSQL 版本和可用扩展的快捷方式,请添加以下内容:

\set version 'SELECT version();'
\set extensions 'select * from pg_available_extensions;'

如果要在启动 psql 提示时显示消息,可以使用 echo 命令。

\echo 'Welcome to PostgreSQL\n'

最后,编辑 psqlrc 会在您启动 psql 时创建输出。 如果要隐藏这些,请在 psql 文件的顶部和底部设置 QUIET 标志。

包起来

完整的文件如下。

\set QUIET 1

\set PROMPT1 '%M:%[%033[1;31m%]%>%[%033[0m%] %n@%/%R%#%x '

\set PROMPT2 '%M %n@%/%R %# '

\pset null '[null]'

\set COMP_KEYWORD_CASE upper

\timing

\set HISTSIZE 2000

\x auto

\set VERBOSITY verbose

\set QUIET 0

\echo 'Welcome to PostgreSQL! \n'
\echo 'Type :version to see the PostgreSQL version. \n' 
\echo 'Type :extensions to see the available extensions. \n'
\echo 'Type \\q to exit. \n'
\set version 'SELECT version();'
\set extensions 'select * from pg_available_extensions;'

现在,当您启动 psql 时,您将看到不同的提示。

$ psql

Welcome to PostgreSQL!

Type :version to see the version.

Type :extensions to see the available extensions.

Type \q to exit.

psql (9.3.4)
Type "help" for help.

[local]:5432 postgres@postgres=#    

您可以进行更多自定义,但这些应该是改善 psql 体验的良好开端。