psql

PostgreSQL的标准命令行客户端

psql 是PostgreSQL的标准命令行客户端应用程序,也是大多数PostgreSQL安装的标准组件。它既可以用于与PostgreSQL服务器进行基于终端的纯文本交互,也可以用于促进自动化脚本任务。

psql 自项目 inception 以来一直是PostgreSQL项目的一个核心部分,并且通常存在于PostgreSQL安装中。它也可以作为独立应用程序安装,许多操作系统/发行版为PostgreSQL服务器本身以及核心客户端应用程序提供单独的包。当然,psql 已经被移植到Windows,但存在一些限制,特别是readline支持。

psql 可以通过Unix域套接字(如果可用)连接到同一服务器上的PostgreSQL实例,或者通过TCP/IP连接到本地或远程服务器上运行的PostgreSQL。

psql 进行最基本的交互是连接到PostgreSQL服务器并发出SQL命令,例如:

postgres$ psql
psql (13.2)
Type "help" for help.
postgres=# SELECT 'hello world';
  ?column? 
------------- 
 hello world 
(1 row) 

psql 还提供了广泛的元命令(称为斜杠命令)和其他功能,使其成为操作SQL的强大工具,并使直接与PostgreSQL后端交互更加容易。

psql 也可以用于将原始SQL从另一个进程管道传输,并执行包含SQL和psql 元命令的脚本。

psql 的默认配置文件是.psqlrc;如果附加了PostgreSQL次要版本或主版本(PostgreSQL 9.2 及更高版本)的数字(例如 .psqlrc-9.6.6 或 .psqlrc-11),则会解析该文件(如果它与psql 版本匹配)。

向后兼容性

psql 旨在与旧的PostgreSQL版本配合使用;截至PostgreSQL 15,支持版本可追溯到PostgreSQL 9.2;请参阅src/bin/psql/describe.c 中的注释。

psql 可以连接到一个运行更新的PostgreSQL版本并且可以执行基本查询的服务器,但应尽可能避免这样做,因为某些功能(特别是元数据查询)可能不可用或无法正常工作。

变更历史

此列表枚举了psql 在每个发行版中的重要功能更改;有关完整详细信息,请参阅每个版本的链接发行说明。

  • PostgreSQL 19
    • 添加了变量 SERVICEFILE(提交 6b1c4d32
  • PostgreSQL 18
    • psql 中添加了支持扩展协议用法的以下命令(提交 d55322b0
      • \parse
      • \bind_named
      • \close_prepared (最初命名为\close,但在提交 fc39b286 中重命名)
    • 添加了变量 SERVICE 和提示配置选项 %s,提供有关服务名称的信息(如果可用)(提交 477728b5
    • 可以在列表命令后附加x 以强制扩展模式(提交 00f4c295
    • \df+\do+\dAo+\dC+ 命令的输出中添加了leakproof 指示符(提交 2355e511
    • 添加了对管道的支持,提供了以下命令(提交 41625ab8
      • \startpipeline
      • \endpipeline
      • \syncpipeline
      • \flush
      • \flushrequest
      • \getresults
    • 展开了\conninfo 的输出(提交 bba2fbc6
    • 添加了管道状态提示配置选项 %P 和状态变量 PIPELINE_SYNC_COUNTPIPELINE_COMMAND_COUNTPIPELINE_RESULT_COUNT(提交 3ce35758
    • 添加了\sendpipeline 斜杠命令(提交 17caf664
    • \dx 现在显示默认扩展版本(提交 d696406a
    • \watch 的默认间隔现在可以配置(提交 1a759c83
  • PostgreSQL 17
    • 添加了\drg 命令(提交 d65ddaca
    • \watch 命令添加了min_rows 参数(提交 f347ec76
    • 改进了默认和空权限显示(提交 d1379ebf
    • 数据库重新连接现在可以通过 SIGINT 取消(提交 cafe1056
  • PostgreSQL 16
    • 添加了\drg 命令(提交 0a1d2a7d
    • 添加了\pset 选项 xheader_width(提交 a45388d6
    • 分区表使用\d+ 现在会指示外部分区(提交 bd95816f
    • 添加了\bind 命令,用于设置查询参数和使用扩展查询协议(提交 5b66de34
    • 添加了\dpS\zS 命令(提交 d913928c
    • \df+ 显示“内部名称”而不是“源代码”(提交 3dfae91f
    • 添加了魔术变量 SHELL_ERRORSHELL_EXIT_CODE(提交 b0d8f2d931ae2aa9
    • \watch 命令添加了可选的执行计数限制(提交 00beecfe
  • PostgreSQL 15
    • 新环境变量 PSQL_WATCH_PAGER,用于为psql\watch 命令设置分页符(提交 7c09d279
    • 添加了\getenv 斜杠命令(提交 33d3eead
    • \lo_list/\dl 在提供 + 选项时,现在会显示大对象的 ACL(提交 328dfbda
    • 现在默认显示多个查询的结果;添加了变量 SHOW_ALL_RESULTS 来控制此行为(提交 7844c991
    • 添加了\dconfig 斜杠命令(提交 3e707fbb
    • 改进了\copy 的性能(提交 eec57115
    • 删除了对早于PostgreSQL 9.2 的版本的支持(提交 cf0cab86
  • PostgreSQL 14
    • 添加了\dX 命令以显示已添加的扩展统计对象(提交 ad600bba
    • \di\dm\dt 命令现在显示访问方法名称(提交 07f386ed
    • 如果命令字符串包含多个查询,则默认显示所有查询结果(提交 3a513067
    • 添加了变量 SHOW_ALL_RESULTS(提交 3a513067
    • \df\do 命令现在接受参数类型说明(提交 a3027e1e
  • PostgreSQL 13psql 发行说明
    • 添加了\warn 命令(提交 02e95a50
    • 添加了以下与运算符相关的斜杠命令(提交 b0b5e20c
      • \dAc - 列出运算符类
      • \dAf - 列出运算符族
      • \dAo - 列出运算符族的运算符
      • \dAp - 列出运算符族的过程
    • \d+ 现在显示对象是永久的、临时的还是未记录的(提交 9a2ea618
    • 改进了TOAST表的\d 输出(提交 eb5472da
    • \e 现在将未终止的查询插入到psql 的查询缓冲区中,使得在提交之前可以查看或进一步编辑查询(提交 d1c866e5
    • \g\gx 可以接受附加的格式化选项,例如 \g (format=csv csv_fieldsep=',')(提交 b63c293b
    • 添加了“隐藏”PROMPT2 提示配置选项 %w(提交 7f338369
    • 默认情况下,在PROMPT1PROMPT2 中包含%x 以显示事务状态(提交 dcdbb5a5
  • PostgreSQL 12psql 发行说明
    • 添加了\dP 命令以列出分区表和索引(提交 1c5d9270
    • CSV添加了表输出模式和 --csv 选项(提交 aa2ba50c
    • psql\help 输出中显示了在线手册页的链接(提交 27f3dea6
    • 特殊变量 VERBOSITY 现在接受值 sqlstate(提交 7bac3aca
  • PostgreSQL 11psql 发行说明
    • 添加了\gdesc 命令(提交 49ca462e
    • 添加了显示 SQL 查询成功/失败的变量(提交 69835bc8;添加的变量:ERRORSQLSTATEROW_COUNTLAST_ERROR_MESSAGELAST_ERROR_SQLSTATE
    • 添加了测试变量是否存在(提交 d57c7a7c
    • 添加了环境变量 PSQL_PAGER,用于控制psql 的分页符(提交 5e8304fd
    • 制表符补全功能已实现服务器独立(提交 722408bc
    • 添加了quitexit 命令,类似于MySQL的命令行客户端(提交 df9f599b
  •  PostgreSQL 10psql 发行说明
    • 添加了显示psql 版本和服务器版本的变量(提交 9ae9d8c1;添加的变量:VERSION_NAMEVERSION_NUMSERVER_VERSION_NAMESERVER_VERSION_NUM
    • 添加了元命令 \if\elif\else\endif(提交 e984ef58
    • 添加了\gx 命令以在扩展模式下执行查询(提交 b2678efd
  • PostgreSQL 9.6psql 发行说明
    • 支持多个和混合的-c-f 选项(提交 d5563d7d
    • 添加了\crosstabview,它以交叉表显示格式打印查询结果(初始提交 c09b18f2
    • 添加了\errverbose 命令,用于显示上次服务器错误的完整详细信息(提交 3cc38ca7
    • \ev\sv 命令用于编辑/显示视图定义(提交 8eb6407a
    • 添加了\gexec 命令,该命令执行一个查询并将结果重新提交为新查询(提交 2bbe9112
    • 制表符补全现在考虑整个查询,而不仅仅是当前行(提交 d854118c
    • 添加了提示选项 %p,它显示已连接后端的 PID(提交 275f05c9
    • 可以通过新变量 SHOW_CONTEXT 控制消息的CONTEXT 字段的显示(提交 0426f349
    • \connect 命令添加了--reuse-previous 选项(提交 9d924e9a
  • PostgreSQL 9.5psql 发行说明
    • 添加了命令行选项 -b 和新的 ECHO 模式 errors,该模式仅显示失败的命令(提交 5b214c5d
    • 添加了AsciiDoc 输出模式(提交 9d9991c8
    • 添加了提示选项 %l,显示当前语句的行号(提交 51bb7956
    • 添加了\pset 选项 pager_min_lines(提交 7655f4cc
    • 添加了 Unicode 列、标题和边框线型控件(提交 a2dabf0e
    • search_path 的基本制表符补全支持(提交 bd409519
    • PostgreSQL 9.2 及更高版本中,\db+ 显示表空间大小(提交 ee80f043
  • PostgreSQL 9.4psql 发行说明
    • SSL 压缩状态现在显示在登录横幅中(提交 d3c98069
    • 不带参数的\pset 现在显示所有设置(提交 c64e68fd
  • PostgreSQL 9.3psql 发行说明
    • 添加了\watch(提交 c6a3fce7
    • 添加了\gset(提交 d2d153fd
    • 仅在连接到更新的(而不是较旧的)服务器版本时发出警告(提交 5cad0245
  • PostgreSQL 9.2psql 发行说明
    • \x 命令添加了auto 选项(提交 95d2af16
    • 添加了\ir 命令(提交 c7f23494
    • 添加了\setenv 命令(提交 e6d9e210
    • 添加了.psqlrc-X.X(其中 X.X 代表 PostgreSQL 主版本)处理(提交 2795592e
    • 现在识别环境变量 PSQL_HISTORYPSQLRC(提交 34c97844
    • 添加了变量 COMP_KEYWORD_CASE 以控制制表符补全中的关键字大小写(提交 db84ba65
  • PostgreSQL 9.1psql 发行说明
    • 添加了\conninfo 命令以显示当前连接信息(提交 013ed0bd
    • 添加了\sf 命令以显示函数的定义(提交 b6e06942
    • 添加了\dL 命令以列出可用的语言(提交 9c5e2c12
    • \dn 现在默认忽略系统模式,\dnS 则包括它们(提交 e43fb604
    • 添加了\dO 命令以列出可用的排序规则(提交 b313bca0
  • PostgreSQL 8.4
    • 添加了\ef 命令(提交 2c863ca8
  • PostgreSQL 8.0
    • 能够处理文件名的波浪号用户扩展(提交 55a92063
  • PostgreSQL 7.4
    • 添加了提示选项 %x 以显示事务状态(初始提交 f9ebf369 时为 %T,后来在提交 9951474c 中更改为%x
    • 添加了特殊变量 VERBOSITY(初始提交 f9ebf369 时为 VERBOSE,后来在提交 02d79e76 中更改为VERBOSITY
  • PostgreSQL 7.3
    • 添加了\dD 命令以列出可用的(提交 a7ade2bb
    • 现在显示视图上的规则(提交 aab0b8f5
  • PostgreSQL 7.0
    • 添加了制表符补全支持(提交 78bc83fe
  • PostgreSQL 6.3
    • 添加了\da 命令以列出可用的聚合函数(提交 4cbc06cf
    • 添加了\do 命令以列出可用的运算符(提交 4cbc06cf
    • 添加了\dT 命令以列出可用的数据类型(提交 4cbc06cf
  • PostgreSQL 6.1
    • 添加了\ds 命令以列出可用的序列(提交 735bf0b7
    • 添加了\dt\di 命令以列出可用的表和索引(提交 ff038a5b
    • 添加了\z 命令(提交 f986173e
  • PostgreSQL 6.0
    • 添加了\copy 命令(提交 7870c5a0
  • PostgreSQL 文档: psql

分类

客户端应用程序核心实用程序psql

另请参阅

.psqlrc斜杠命令psql 技巧

反馈

在此处提交关于“psql”的任何评论、建议或更正 这里