\dconfig[x+] [ 模式 ]
列出服务器配置参数及其值。如果指定了 pattern,则仅列出名称与模式匹配的参数。没有模式时,仅列出设置为非默认值的参数。(使用 \dconfig * 查看所有参数。)如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则每个参数都与其数据类型、可以设置参数的上下文以及访问权限(如果已授予非默认访问权限)一起列出。
\dC[x+] [ 模式 ]
列出类型转换。如果指定了 pattern,则仅列出其源或目标类型与模式匹配的转换。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则显示有关每个转换的附加信息,包括其底层函数是否防泄漏以及转换的描述。
\dd[Sx] [ 模式 ]
显示类型为约束、操作符类、操作符族、规则和触发器的对象的描述。所有其他注释可以通过各自对象的反斜杠命令查看。
\dd 显示与模式匹配的对象的描述,或者如果未给出参数,则显示适当类型的可见对象的描述。但在任何一种情况下,仅列出具有描述的对象。默认情况下,仅显示用户创建的对象;提供模式或 S 修饰符以包括系统对象。如果 x 附加到命令名称,则结果以扩展模式显示。
可以使用 COMMENT SQL 命令创建对象的描述。
\dD[Sx+] [ 模式 ]
列出域。如果指定了 pattern,则仅显示名称与模式匹配的域。默认情况下,仅显示用户创建的对象;提供模式或 S 修饰符以包括系统对象。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则每个对象都与其关联的权限和描述一起列出。
\ddp[x] [ 模式 ]
列出默认访问权限设置。对于默认权限设置已从内置默认值更改的每个角色(和模式,如果适用)显示一个条目。如果指定了 pattern,则仅列出其角色名或模式名与模式匹配的条目。如果 x 附加到命令名称,则结果以扩展模式显示。
使用 ALTER DEFAULT PRIVILEGES 命令设置默认访问权限。
\dE[Sx+] [ 模式 ]
\di[Sx+] [ 模式 ]
\dm[Sx+] [ 模式 ]
\ds[Sx+] [ 模式 ]
\dt[Sx+] [ 模式 ]
\dv[Sx+] [ 模式 ]
在这组命令中,字母 E、i、m、s、t 和 v 分别代表外部表、索引、物化视图、序列、表和视图。您可以指定这些字母中的任意或全部,以任意顺序,以获得这些类型对象的列表。例如,\dti 列出表和索引。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则每个对象都与其持久性状态(永久、临时或未记录)、磁盘上的物理大小以及关联的描述(如果有)一起列出。如果指定了 pattern,则仅列出名称与模式匹配的对象。默认情况下,仅显示用户创建的对象;提供模式或 S 修饰符以包括系统对象。
\des[x+] [ 模式 ]
列出外部服务器(助记符:“外部服务器”)。如果指定了 pattern,则仅列出名称与模式匹配的那些服务器。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则显示每个服务器的完整描述,包括服务器的访问权限、类型、版本、选项和描述。
\det[x+] [ 模式 ]
列出外部表(助记符:“外部表”)。如果指定了 pattern,则仅列出其表名或模式名与模式匹配的条目。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则还显示通用选项和外部表描述。
\deu[x+] [ 模式 ]
列出用户映射(助记符:“外部用户”)。如果指定了 pattern,则仅列出其用户名与模式匹配的那些映射。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则显示有关每个映射的附加信息。
注意
\deu+ 可能还会显示远程用户的用户名和密码,因此应注意不要泄露它们。
\dew[x+] [ 模式 ]
列出外部数据包装器(助记符:“外部包装器”)。如果指定了 pattern,则仅列出名称与模式匹配的那些外部数据包装器。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则还显示外部数据包装器的访问权限、选项和描述。
\df[anptwSx+] [ 模式 [ 参数模式 ... ] ]
列出函数,以及它们的结果数据类型、参数数据类型和函数类型,这些类型分类为“agg”(聚合)、“normal”(普通)、“procedure”(过程)、“trigger”(触发器)或“window”(窗口)。要仅显示特定类型的函数,请将相应的字母 a、n、p、t 或 w 添加到命令中。如果指定了 pattern,则仅显示名称与模式匹配的函数。任何其他参数都是类型名称模式,它们与函数的第一个、第二个等参数的类型名称匹配。(匹配的函数可以比您指定的参数更多。要防止这种情况,请将破折号 - 写为最后一个 arg_pattern。)默认情况下,仅显示用户创建的对象;提供模式或 S 修饰符以包括系统对象。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则显示有关每个函数的附加信息,包括易变性、并行安全性、所有者、安全分类、是否防泄漏、访问权限、语言、内部名称(仅适用于 C 和内部函数)和描述。可以使用 \sf 查看特定函数的源代码。
\dF[x+] [ 模式 ]
列出文本搜索配置。如果指定了 pattern,则仅显示名称与模式匹配的配置。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则显示每个配置的完整描述,包括底层文本搜索解析器和每个解析器标记类型的字典列表。
\dFd[x+] [ 模式 ]
列出文本搜索字典。如果指定了 pattern,则仅显示名称与模式匹配的字典。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则显示有关每个所选字典的附加信息,包括底层文本搜索模板和选项值。
\dFp[x+] [ 模式 ]
列出文本搜索解析器。如果指定了 pattern,则仅显示名称与模式匹配的解析器。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则显示每个解析器的完整描述,包括底层函数和识别的标记类型列表。
\dFt[x+] [ 模式 ]
列出文本搜索模板。如果指定了 pattern,则仅显示名称与模式匹配的模板。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则显示有关每个模板的附加信息,包括底层函数名称。
\dg[Sx+] [ 模式 ]
列出数据库角色。(由于“用户”和“组”的概念已统一为“角色”,此命令现在等效于 \du。)默认情况下,仅显示用户创建的角色;提供 S 修饰符以包括系统角色。如果指定了 pattern,则仅列出名称与模式匹配的那些角色。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则显示有关每个角色的附加信息;当前这会为每个角色添加注释。
\dl[x+]
这是 \lo_list 的别名,它显示大对象列表。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则每个大对象都与其关联的权限(如果有)一起列出。
\dL[Sx+] [ 模式 ]
列出过程语言。如果指定了 pattern,则仅列出名称与模式匹配的语言。默认情况下,仅显示用户创建的语言;提供 S 修饰符以包括系统对象。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则每种语言都与其调用处理程序、验证器、访问权限以及是否是系统对象一起列出。
\dn[Sx+] [ 模式 ]
列出模式(命名空间)。如果指定了 pattern,则仅列出名称与模式匹配的模式。默认情况下,仅显示用户创建的对象;提供模式或 S 修饰符以包括系统对象。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则每个对象都与其关联的权限和描述(如果有)一起列出。
\do[Sx+] [ 模式 [ 参数模式 [ 参数模式 ] ] ]
列出操作符及其操作数和结果类型。如果指定了 pattern,则仅列出名称与模式匹配的操作符。如果指定了一个 arg_pattern,则仅列出其右参数类型名称与该模式匹配的前缀操作符。如果指定了两个 arg_pattern,则仅列出其参数类型名称与那些模式匹配的二元操作符。(或者,对于一元操作符的未使用参数,写入 -。)默认情况下,仅显示用户创建的对象;提供模式或 S 修饰符以包括系统对象。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则显示有关每个操作符的附加信息,包括底层函数的名称以及是否防泄漏。
\dO[Sx+] [ 模式 ]
列出排序规则。如果指定了 pattern,则仅列出名称与模式匹配的排序规则。默认情况下,仅显示用户创建的对象;提供模式或 S 修饰符以包括系统对象。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则每个排序规则都与其关联的描述(如果有)一起列出。请注意,仅显示可与当前数据库编码一起使用的排序规则,因此结果在同一安装的不同数据库中可能有所不同。
\dp[Sx] [ 模式 ]
列出表、视图和序列及其关联的访问权限。如果指定了 pattern,则仅列出名称与模式匹配的表、视图和序列。默认情况下,仅显示用户创建的对象;提供模式或 S 修饰符以包括系统对象。如果 x 附加到命令名称,则结果以扩展模式显示。
使用 GRANT 和 REVOKE 命令设置访问权限。
\dP[itnx+] [ 模式 ]
列出分区关系。如果指定了 pattern,则仅列出名称与模式匹配的条目。修饰符 t(表)和 i(索引)可以附加到命令,过滤要列出的关系类型。默认情况下,列出分区表和索引。
如果使用修饰符 n(“嵌套”),或指定了模式,则包括非根分区关系,并显示一列显示每个分区关系的父级。
如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则还显示每个关系的分区大小之和,以及关系的描述。如果 n 与 + 结合使用,则显示两个大小:一个包括直接附加的叶分区的总大小,另一个显示所有分区的总大小,包括间接附加的子分区。
\drds[x] [ 角色模式 [ 数据库模式 ] ]
列出已定义的配置设置。这些设置可以是特定于角色的、特定于数据库的或两者兼有。role-pattern 和 database-pattern 分别用于选择要列出的特定角色和数据库。如果省略,或者指定了 *,则列出所有设置,分别包括那些非角色特定或非数据库特定的设置。如果 x 附加到命令名称,则结果以扩展模式显示。
使用 ALTER ROLE 和 ALTER DATABASE 命令定义每个角色和每个数据库的配置设置。
\drg[Sx] [ 模式 ]
列出有关每个已授予角色成员资格的信息,包括分配的选项(ADMIN、INHERIT 和/或 SET)和授予者。有关角色成员资格的信息,请参阅 GRANT 命令。
默认情况下,仅显示授予用户创建角色的授权;提供 S 修饰符以包括系统角色。如果指定了 pattern,则仅列出授予名称与模式匹配的那些角色的授权。如果 x 附加到命令名称,则结果以扩展模式显示。
\dRp[x+] [ 模式 ]
列出复制发布。如果指定了 pattern,则仅列出名称与模式匹配的那些发布。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则还显示与每个发布关联的表和模式。
\dRs[x+] [ 模式 ]
列出复制订阅。如果指定了 pattern,则仅列出名称与模式匹配的那些订阅。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则还显示订阅的附加属性。
\dT[Sx+] [ 模式 ]
列出数据类型。如果指定了 pattern,则仅列出名称与模式匹配的类型。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则每种类型都与其内部名称和大小、如果是枚举类型则其允许的值以及其关联的权限一起列出。默认情况下,仅显示用户创建的对象;提供模式或 S 修饰符以包括系统对象。
\du[Sx+] [ 模式 ]
列出数据库角色。(由于“用户”和“组”的概念已统一为“角色”,此命令现在等效于 \dg。)默认情况下,仅显示用户创建的角色;提供 S 修饰符以包括系统角色。如果指定了 pattern,则仅列出名称与模式匹配的那些角色。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则显示有关每个角色的附加信息;当前这会为每个角色添加注释。
\dx[x+] [ 模式 ]
列出已安装的扩展。如果指定了 pattern,则仅列出名称与模式匹配的那些扩展。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则列出属于每个匹配扩展的所有对象。
\dX[x] [ 模式 ]
列出扩展统计信息。如果指定了 pattern,则仅列出名称与模式匹配的那些扩展统计信息。如果 x 附加到命令名称,则结果以扩展模式显示。
每种扩展统计信息的状态显示在以其统计信息种类命名的列中(例如 Ndistinct)。defined 表示在创建统计信息时请求了它,NULL 表示未请求。如果您想知道是否运行了 ANALYZE 以及统计信息是否可供规划器使用,可以使用 pg_stats_ext。
\dy[x+] [ 模式 ]
列出事件触发器。如果指定了 pattern,则仅列出名称与模式匹配的那些事件触发器。如果 x 附加到命令名称,则结果以扩展模式显示。如果 + 附加到命令名称,则每个对象都与其关联的描述一起列出。
\e 或 \edit [ 文件名 ] [ 行号 ]
如果指定了 filename,则编辑该文件;编辑器退出后,文件的内容将复制到当前查询缓冲区。如果未给出文件名,则当前查询缓冲区将复制到一个临时文件,然后以相同方式编辑。或者,如果当前查询缓冲区为空,则最近执行的查询将复制到一个临时文件并以相同方式编辑。
如果您编辑文件或先前的查询,并且未修改文件就退出编辑器,则查询缓冲区将被清除。否则,查询缓冲区的新内容将根据 psql 的正常规则重新解析,将整个缓冲区视为单行。任何完整的查询都会立即执行;也就是说,如果查询缓冲区包含分号或以分号结尾,则直到该点的所有内容都会被执行并从查询缓冲区中删除。查询缓冲区中剩余的任何内容都会重新显示。键入分号或 \g 发送它,或 \r 通过清除查询缓冲区取消它。
将缓冲区视为单行主要影响元命令:元命令之后缓冲区中的任何内容都将被视为元命令的参数,即使它跨越多行。(因此,您不能通过这种方式制作使用元命令的脚本。请使用 \i。)
如果指定了行号,psql 将光标定位在文件或查询缓冲区的指定行上。请注意,如果给出一个全数字参数,psql 会假定它是行号,而不是文件名。
提示
有关如何配置和自定义编辑器的信息,请参阅下面的环境。
\echo 文本 [ ... ]
将计算后的参数打印到标准输出,用空格分隔,后跟换行符。这对于在脚本输出中插入信息很有用。例如:
=> \echo `date`
Tue Oct 26 21:40:57 CEST 1999
如果第一个参数是未加引号的 -n,则不写入尾随换行符(第一个参数也不写入)。
提示
如果使用 \o 命令重定向查询输出,您可能希望使用 \qecho 而不是此命令。另请参阅 \warn。
\ef [ 函数描述 [ 行号 ] ]
此命令获取并编辑命名函数或过程的定义,形式为 CREATE OR REPLACE FUNCTION 或 CREATE OR REPLACE PROCEDURE 命令。编辑方式与 \edit 相同。如果您退出编辑器而不保存,则语句将被丢弃。如果您保存并退出编辑器,并且您向其添加了分号,则更新后的命令将立即执行。否则它会重新显示;键入分号或 \g 发送它,或 \r 取消。
目标函数可以仅按名称指定,或按名称和参数指定,例如 foo(integer, text)。如果存在多个同名函数,则必须给出参数类型。
如果未指定函数,则会呈现一个空的 CREATE FUNCTION 模板进行编辑。
如果指定了行号,psql 将光标定位在函数体的指定行上。(请注意,函数体通常不从文件的第一行开始。)
与大多数其他元命令不同,行的整个其余部分始终被视为 \ef 的参数,并且参数中不执行变量插值或反引号扩展。
提示
有关如何配置和自定义编辑器的信息,请参阅下面的环境。
\encoding [ 编码 ]
设置客户端字符集编码。没有参数时,此命令显示当前编码。
\errverbose
以最大详细程度重复最近的服务器错误消息,就像 VERBOSITY 设置为 verbose 且 SHOW_CONTEXT 设置为 always 一样。
\ev [ 视图名 [ 行号 ] ]
此命令获取并编辑命名视图的定义,形式为 CREATE OR REPLACE VIEW 命令。编辑方式与 \edit 相同。如果您退出编辑器而不保存,则语句将被丢弃。如果您保存并退出编辑器,并且您向其添加了分号,则更新后的命令将立即执行。否则它会重新显示;键入分号或 \g 发送它,或 \r 取消。
如果未指定视图,则会呈现一个空的 CREATE VIEW 模板进行编辑。
如果指定了行号,psql 将光标定位在视图定义的指定行上。
与大多数其他元命令不同,行的整个其余部分始终被视为 \ev 的参数,并且参数中不执行变量插值或反引号扩展。
\f [ 字符串 ]
设置非对齐查询输出的字段分隔符。默认为竖线(|)。它等效于 \pset fieldsep。
\g [ (选项=值 [...]) ] [ 文件名 ]
\g [ (选项=值 [...]) ] [ |命令 ]
将当前查询缓冲区发送到服务器执行。
如果在 \g 后出现括号,它们包围一个以空格分隔的 option=value 格式化选项子句列表,这些子句的解释方式与 \pset option value 命令相同,但仅在此查询期间有效。在此列表中,= 符号周围不允许有空格,但选项子句之间需要空格。如果省略 =value,则命名选项的更改方式与没有显式值的 \pset option 相同。
如果给出了文件名或 |command 参数,则查询的输出将写入指定文件或通过管道传输到给定 shell 命令,而不是照常显示。仅当查询成功返回零个或多个元组时,才写入文件或命令,如果查询失败或是非数据返回 SQL 命令,则不写入。
如果当前查询缓冲区为空,则重新执行最近发送的查询。除了该行为之外,\g 没有任何参数基本上等同于分号。带有参数时,\g 提供了 \o 命令的“一次性”替代方案,并且另外允许对通常由 \pset 设置的输出格式化选项进行一次性调整。
当最后一个参数以 | 开头时,行的整个其余部分被视为要执行的命令,并且其中不执行变量插值或反引号扩展。行的其余部分按字面意义传递给 shell。
\gdesc
显示当前查询缓冲区结果的描述(即列名和数据类型)。查询实际上并未执行;但是,如果它包含某种语法错误,该错误将以正常方式报告。
如果当前查询缓冲区为空,则描述最近发送的查询。
\getenv psql变量 环境变量
获取环境变量 env_var 的值并将其分配给 psql 变量 psql_var。如果 env_var 未在 psql 进程的环境中定义,则 psql_var 不变。示例:
=> \getenv home HOME
=> \echo :home
/home/postgres
\gexec
将当前查询缓冲区发送到服务器,然后将查询输出(如果有)的每一行的每一列视为要执行的 SQL 语句。例如,要在 my_table 的每一列上创建索引:
=> SELECT format('create index on my_table(%I)', attname)
-> FROM pg_attribute
-> WHERE attrelid = 'my_table'::regclass AND attnum > 0
-> ORDER BY attnum
-> \gexec
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
生成的查询按照返回行的顺序执行,并且如果一行中有多个列,则从左到右执行。忽略 NULL 字段。生成的查询按字面意义发送到服务器进行处理,因此它们不能是 psql 元命令,也不能包含 psql 变量引用。如果任何单个查询失败,除非设置了 ON_ERROR_STOP,否则继续执行剩余查询。每个查询的执行都受 ECHO 处理的影响。(在使用 \gexec 时,通常建议将 ECHO 设置为 all 或 queries。)查询日志记录、单步模式、计时和其他查询执行功能也适用于每个生成的查询。
如果当前查询缓冲区为空,则重新执行最近发送的查询。
\gset [ 前缀 ]
将当前查询缓冲区发送到服务器,并将查询的输出存储到 psql 变量中(参见下面的变量)。要执行的查询必须正好返回一行。该行的每一列都存储到一个单独的变量中,变量名与列名相同。例如:
=> SELECT 'hello' AS var1, 10 AS var2
-> \gset
=> \echo :var1 :var2
hello 10
如果指定了前缀,则该字符串会附加到查询的列名之前以创建要使用的变量名:
=> SELECT 'hello' AS var1, 10 AS var2
-> \gset result_
=> \echo :result_var1 :result_var2
hello 10
如果列结果为 NULL,则相应的变量未设置,而不是被设置。
如果查询失败或未返回一行,则不会更改任何变量。
如果当前查询缓冲区为空,则重新执行最近发送的查询。
\gx [ (选项=值 [...]) ] [ 文件名 ]
\gx [ (选项=值 [...]) ] [ |命令 ]
\gx 等同于 \g,只是它强制此查询使用扩展输出模式,就像在 \pset 选项列表中包含了 expanded=on。另请参阅 \x。
\h 或 \help [ 命令 ]
提供指定 SQL 命令的语法帮助。如果未指定 command,则 psql 将列出所有可提供语法帮助的命令。如果 command 是星号(*),则显示所有 SQL 命令的语法帮助。
与大多数其他元命令不同,行的整个其余部分始终被视为 \help 的参数,并且参数中不执行变量插值或反引号扩展。
注意
为了简化输入,由几个单词组成的命令不必加引号。因此,输入 \help alter table 是可以的。
\H 或 \html
打开 HTML 查询输出格式。如果 HTML 格式已经打开,则切换回默认的对齐文本格式。此命令是为了兼容性和便利性,但有关设置其他输出选项的信息,请参阅 \pset。
\i 或 \include 文件名
从文件 filename 读取输入并执行它,就像在键盘上键入一样。
如果 filename 是 -(连字符),则读取标准输入直到 EOF 指示或 \q 元命令。这可用于将交互式输入与文件输入交错。请注意,仅当 Readline 在最外层级别处于活动状态时才会使用 Readline 行为。
注意
如果您想在读取行时在屏幕上看到它们,必须将变量 ECHO 设置为 all。
\if 表达式
\elif 表达式
\else
\endif
此命令组实现可嵌套的条件块。条件块必须以 \if 开头并以 \endif 结束。在这之间可以有任意数量的 \elif 子句,这些子句后面可以可选地跟一个 \else 子句。普通查询和其他类型的反斜杠命令可能(并且通常确实)出现在构成条件块的命令之间。
\if 和 \elif 命令读取它们的参数并将其计算为布尔表达式。如果表达式产生 true,则正常继续处理;否则,跳过行,直到找到匹配的 \elif、\else 或 \endif。一旦 \if 或 \elif 测试成功,同一块中后续 \elif 命令的参数不会被计算,而是被视为 false。仅当没有先前的匹配 \if 或 \elif 成功时,才处理 \else 之后的
当遇到非转义分号时,会将三个 SQL 命令作为一个请求发送到服务器。服务器会将此类请求作为单个事务执行,除非字符串中包含显式的 BEGIN/COMMIT 命令将其划分为多个事务。