如何在Ubuntu14.04上使用psqlrc自定义PostgreSQL提示
介绍
psqlrc 文件自定义 psql 交互式命令行客户端的行为。 psql 使您能够以交互方式输入查询,将它们发送到 PostgreSQL,并查看查询结果。 该文件有三种风格:
- 系统范围的 psqlrc 文件位于 PostgreSQL 的系统配置目录中。
此目录的位置取决于您的 PostgreSQL 安装,但可以使用 pg_config 工具找到。
pg_config --sysconfdir
- 可以在用户的主目录中找到或创建用户 psqlrc 文件。
touch ~/.psqlrc
- 如果有多个 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 体验的良好开端。