zzxworld

PostgreSQL psql 内部命令参考列表

psql 内部命令是在终端通过 psql 命令连接到 PostgreSQL 数据库后操作数据库的一些特殊指令。这种命令以反斜杠 \ 开头,所以也常被称为反斜杠命令,或是元命令(meta commands)。

再次提醒,只有通过 psql 命令完成 PostgreSQL 数据库连接后才能使用本文所设计的内部命令。关于如何连接可以参考下面这篇文章:《psql 命令使用指南》。

使用 psql 命令在终端成功建立连接后的界面如下:

psql shell

postgres=# 后就可以开始使用内部命令了。

psql 元命令示例

列出所有数据库:

\l

连接到 wordpress 数据库:

\c wordpress

退出 psql 操作界面:

\q

psql 元命令列表

命令名称 说明
\a 如果目前的表输出格式是不对齐的,切换成对齐的。 如果是对齐的,切换成不对齐。这条命令是为了向后兼容。参阅 \pset 获取一个通用的解决方法。
\cd [directory] 把当前工作目录改变到 directory。
\C [title] 把正在打印的表的标题设置为一个查询的结果或者取消这样的设置。 这条命令等效于 \pset titletitle
\connect [dbname [username]] 与指定数据库建立连接。可以简写为 \c。不带任何参数运行将用默认用户名和数据库连接。
\copytable 执行客户端拷贝。这是一个运行 SQL COPY 命令的操作, 不同的是 SQL COPY 是服务器在读写指明的文件,而 psql 读写文件并作为本地的文件系统和服务器之间的路由取出或写入数据。这意味着文件访问性和权限都是本地用户的,而不是服务器的,因此不需要 SQL 超级用户权限。此操作不象 SQL COPY 命令这样高效,因为所有数据必须通过客户端/服务器联接。
\copyright 显示 PostgreSQL 的版权和版本信息。
\d [pattern] 对于每个匹配 pattern 的关系(表,视图,索引或者序列),显示所有列,它们的类型和任何特殊属性。
\da [pattern] 列出所有可用聚集函数,以及它们操作的数据类型。如果声明了 pattern,那么只显示匹配的聚集函数。
\dc [pattern] 列出所有字符集之间的可用转换。如果声明了 pattern,则只列出那些匹配模式的转换。
\dC 列出所有类型转换。
\dd [pattern] 显示所有匹配 pattern 的描述,如果没有给出参数,显示所有可视对象。
\dD [pattern] 列出所有可用域。
\df [pattern] 列出所有可用函数,以及它们的参数和返回的数据类型。
\distvS [pattern] 这不是一个实际上的命令名称:字母 istvS 分别代表索引(index), 序列(sequence),表(table),视图(view)和系统表(system table)。可以以任意顺序声明任意或者所有这些字母获得这些对象的一个列表。字幕 S 把列表限制于系统对象。如果没有 S,则只显示非系统对象。如果在命令名上附加了 +,那么还会列出和每个对象相关联的描述。
\dl 这是 \lo_list 的别名,显示一个大对象的列表。
\dn [pattern] 列出所有可用模式(名字空间)。如果声明了 pattern (一个正则表达式),那么只列出匹配模式的模式名。
\do [pattern] 列出所有可用操作符,以及它们的操作数和返回的数据类型。 如果声明了 pattern,那么只显示匹配模式的操作符。
\dp [pattern] 生成一列可用的表和它们相关的权限。 如果声明了 pattern, 那么只列出名字可以匹配模式的表。
\dT [pattern] 列出所有数据类型或只显示那些匹配 pattern的。
\du [pattern] 列出所有已配置用户或者只列出那些匹配 pattern 的用户。
\edit [filename] 编辑 filename 或缓冲区内容。可简写为 \e。如果声明了 filename,则编辑此文件并且在编辑器退出后将其内容拷贝回查询缓冲区。 如果没有给出参数,则把当前查询缓冲区内容拷贝到一个临时文件然后以相同方式编辑。
\echotext [...] 向标准输出打印参数,用一个空格分隔并且最后跟着一个新行。这个特性在显示脚本的输出时会有用。
\encoding [encoding] 设置客户端字符编码方式。不带参数时,这条命令显示当前的编码方式。
\f [string] 为不对齐的查询输出设置域分隔符。缺省时是竖条 |
\g [ {filename | |command}] 把当前的查询输入缓冲区的内容发送给服务器并且把输出输出到可选的 filename 或者把输出定向到一个独立的 Unix shell 执行 command。 单独一个 \g 实际上等效于一个分号。
\help [command] 给出指定 SQL 命令的语法帮助。可简写为 \h。如果没有给出 command,那么 psql 将列出可获得语法帮助的所有命令。如果 command 是一个星号 *,则显示所有 SQL 命令的语法帮助。
\H 打开 HTML 查询输出格式。如果 HTML 格式已经打开,则切换回缺省的对齐的文本格式。
\ifilename 从文件filename中读取并把其内容当作从键盘输入的那样执行查询。
\list 列出服务器上所有数据库的名字和它们的所有者以及字符集编码。可简写为 \l。在命令名称后面加一个 + 还可以看到对数据库的描述。
\lo_exportloidfilename 从数据库里读取 OID 为 loid 的大对象并把她写到 filename里。这个功能与服务器函数 lo_export 有些微小的区别,lo_export 运行时带着运行数据库服务器的用户权限,而且是在服务器的文件系统上。
\lo_importfilename [comment] 把文件存储为一个 PostgreSQL 大对象。可以带着一个该对象的注解选项。
\lo_list 显示一个目前存储在该数据库里的所有 PostgreSQL 大对象和它们的所有者的列表。
\lo_unlinkloid 从数据库里删除 OID 为 loid 的大对象。
\o [{filename | |command}] 把后面的查询结果保存到文件 filename 里或者把后面的查询结果定向到一个独立的 Unix shell 执行 command。 如果没有声明参数,查询输出重置为标准输出。
\p 打印当前查询缓冲区到标准输出。
\psetparameter [value] 这条命令设置影响查询结果表输出的选项。value 的语意也取决于 parameter 描述设置的选项。
\q 退出 psql 程序。
\qechotext [...] 这条命令等效于 \echo,区别是所有输出将写入由 \o 设置的输出通道。
\r 重置查询缓冲区。
\s [filename] 将命令行历史打印出或是存放到 filename。如果省略 filename,将输出到标准输出。这个选项只有在 psql 配置成使用 GNU 历史库后才生效。
\set [name [value [...]]] 设置内部变量 name 为 value 或着如果给出了多于一个值,设置为所有这些值的联接结果。如果没有给出第二个参数,只设变量不设值。要重置一个变量,使用 \unset 命令。
\t 切换输出的列/字段名的信息头和行记数脚注。这条命令等效于 \pset tuples_only,提供主要为了方便。
\Ttable_options 允许在使用 HTML 输出模式时声明放在 table 标记里的属性。这条命令等效于 \pset tableattr table_options
\timing 切换每个 SQL 语句使用的时间,单位是毫秒。
\w {filename || command} 将当前查询缓冲区输出到文件 filename 或者定向到 Unix 命令 command。
\x 切换扩展行格式。等效于 \pset expanded
\z [pattern] 生成一个带有访问权限列表的数据库中所有表的列表。如果给出任何 pattern,则被当成一个规则表达式,只显示匹配的表。
\! [command] 返回到一个独立的 Unix shell 或者执行 Unix 命令 command。参数不会被进一步解释,shell 将看到全部参数。
\? 获得关于反斜杠命令的帮助信息。