PostgreSQL 인 터 랙 션 터미널 명령 의 psql

psql --  PostgreSQL 交互终端

用法:
psql [option...] [dbname [username]]

描述:
psql 是一个以终端为基础的 PostgreSQL 前端。它允许你交互地键入查询,把它们发出给 PostgreSQL, 然后看看查询的结果。另外,输入可以来自一个文件。还有, 它提供了一些元命令和多种类 shell 地特性来实现书写脚本以及对大量任务的自动化。

参数:

-a
--echo-all
    在读取行时向标准输出打印所有内容。 这个选项在脚本处理时比交互模式时更有用。这个选项等效于设置变量 ECHO 为 all。 
    
-A
--no-align
    切换为非对齐输出模式。(缺省输出模式是对齐的。) 
    
-c command
--command command
    声明 psql 将执行一条查询字串, command,然后退出。这一点在 shell 脚本里很有用。
    command 必须是一条完全可以被服务器分析的查询字串(也就是说,它不包含 psql特有的特性), 或者是一个反斜杠命令。这样你就不会混合 SQL 和 psql 元命令。要想混合使用,你可以把字串定向到 psql里,象这样: echo "\x \\ select * from foo;" | psql。
    如果命令字串包含多个 SQL 命令,那么他们在一个事务里处理, 除非在字串里包含了明确的 BEGIN/COMMIT 命令把他们分成多个事务。 这个和从 psql 的标准输入里给它填充相同字串不同。 
    
-d dbname
--dbname dbname
    声明想要联接的数据库名称。等效于在命令行行上把 dbname 声明为第一个非选项参数。 
    
-e
--echo-queries
    把所有发送给服务器的查询同时也拷贝到标准输出。 等效于把变量 ECHO 设置为 queries。 
    
-E
--echo-hidden
    回显由\d和其他反斜杠命令生成的实际查询。 你可以使用这个命令学习 psql 的内部操作。 这等效于在psql里设置变量ECHO_HIDDEN。 
    
-f filename
--file filename
    使用 filename作为命令的语句源而不是交互式读入查询。 在处理完文件后,psql 结束。这个选项在很多方面等效于内部命令 \i。
    如果 filename 是 -(连字符),则从标准输入读取。
    使用这个选项与用 psql  \dd version
                         Object descriptions
       Schema   |  Name   |  Object  |      Description
    ------------+---------+----------+---------------------------
     pg_catalog | version | function | PostgreSQL version string
    (1 row)
    可以用 COMMENT SQL 命令生成对对象的描述。 
    
\dD [ pattern ]
    列出所有可用域。如果声明了 pattern,那么只显示匹配的域。 
    
\df [ pattern ]
\df+ [ pattern ]
    列出所有可用函数,以及它们的参数和返回的数据类型。如果声明了 pattern,那么只显示匹配(正则表达式)的函数。如果使用了 \df+ 的形式,每个函数的附加信息,包括语言和描述也会显示出来。
    注意: 要查找接受或者返回特定类型的函数,使用你的分页器的搜索功能来滚动 \df 的输出。
    为了减少混乱,\df 并不显示数据类型的 I/O 函数。 这样是通过忽略那些接受或者返回类型 cstring 的函数实现的。 

\dg [ pattern ]
    列出所有数据库组。如果声明了 pattern, 只显示那些匹配模式的名字。 
    
\distvS [ pattern ]
    这不是实际的命令名称:字母 i,s, t,v,S 分别代表索引(index), 序列(sequence),表(table),视图(view)和系统表(system table)。 你可以以任意顺序声明任意或者所有这些字母获得这些对象的一个列表。 字幕 S 把列表限制于系统对象;如果没有 S,则只显示非系统对象。 如果在命令名上附加了 +,那么还会列出和每个对象相关联的描述,如果有的话。
    如果声明了 pattern,那么只列出匹配模式的对象。 
    
\dl
    这是 \lo_list的别名,显示一个大对象的列表。 
    
\dn [ pattern ]
\dn+ [ pattern ]
    列出所有可用模式(名字空间)。如果声明了 pattern (一个正则表达式),那么只列出匹配模式的模式名。不显示非本地的临时模式。 如果在命令名上附加了 +,那么每个对象都和与之相关的权限和注释一起列出(如果有的话)。 
    
\do [ pattern ]
    列出所有可用操作符,以及它们的操作数和返回的数据类型。 如果声明了 pattern,那么只显示匹配模式的操作符。 
    
\dp [ pattern ]
    生成一列可用的表和它们相关的权限。 如果声明了 pattern, 那么只列出名字可以匹配模式的表。
    命令 GRANT 和 REVOKE 用于设置访问权限。 参阅 GRANT 获取更多信息。 
    
\dT [ pattern ]
\dT+ [ pattern ]
    列出所有数据类型或只显示那些匹配 pattern的。这条命令的 \dT+ 形式显示更多信息。 
    
\du [ pattern ]
    列出所有已配置用户或者只列出那些匹配 pattern 的用户。 
    
\edit (or \e) [ filename ]
    如果声明了 filename, 则编辑此文件并且在编辑器退出后将其内容拷贝回查询缓冲区。 如果没有给出参数,则把当前查询缓冲区内容拷贝到一个临时文件然后以相同方式编辑。
    然后根据一般的psql规则重新分析查询缓冲区, 这时整个缓冲区当作一个单行。(因此你无法用这个方法制作“脚本”,用 \i 做脚本。) 这还意味着如果该查询以分号结尾(或者包含分号),它就会马上被执行。否则它只是在查询缓冲区里等待。
    提示: psql 搜索环境变量 PSQL_EDITOR,EDITOR 和 VISUAL(以此顺序)查找要用到哪个编辑器。如果上面的都没有设置,那么在 Unix 系统上使用 vi,在 Windows 系统上用 notepad.exe。 

\echo text [ ... ]
    向标准输出打印参数,用一个空格分隔并且最后跟着一个新行。 这个特性在显示脚本的输出时会有用。例如:
    => \echo `date`
    Tue Oct 26 21:40:57 CEST 1999
    果第一个参数是一个无引号的 -n,那么不会写出结尾的新行。
    提示: 如果你使用 \o 命令重定向你的查询的输出,你可能会用 \qecho取代这条命令。 

\encoding [ encoding ]
    设置客户端字符编码方式。不带参数时,这条命令显示当前的编码方式。 
    
\f [ string ]
    为不对齐的查询输出设置域分隔符。缺省时是竖条(|)。 参阅 \pset 获取设置输出选项的通用方法。 
    
\g [ { filename | |command } ]
    把当前的查询输入缓冲区的内容发送给服务器并且把查询的输出存储到可选的 filename 或者把输出定向到一个独立的在执行 command 的 Unix shell。 单独一个 \g 实际上等效于一个分号。一个带有参数的\g 是"一次性"的 \o命令的代用品。 
    
\help (或者 \h) [ command ]
    给出指定 SQL 命令的语法帮助。如果没有给出 command ,那么 psql 将列出可获得语法帮助的所有命令。如果 command 是一个星号("*"),则显示所有 SQL 命令的语法帮助。
    注意: 为简化敲击,包含多个单字的命令不需要引起。因此键入 \help alter table 是正确的。 

\H
    打开 HTML 查询输出格式。如果 HTML 格式已经打开,则切换回缺省的对齐的文本格式。 这个命令是为了兼容和方便,参阅 \pset 获取设置其他输出选项的内容。 
    
\i filename
    从文件filename中读取并把其内容当作从键盘输入的那样执行查询。
    注意: 如果你想在屏幕上看到读入的行,你必须对所有行设置变量 ECHO 为 all。 

\l (或 \list)
\l+ (或 \list+)
    列出服务器上所有数据库的名字和它们的所有者以及字符集编码。在命令名称后面加一个 "+" 还可以看到对数据库的描述。 
    
\lo_export loid filename
    从数据库里读取 OID 为 loid 的大对象并把她写到 filename里。 注意这个功能与服务器函数 lo_export 有些微小的区别, lo_export 运行时带着运行数据库服务器的用户权限, 而且是在服务器的文件系统上。
    提示: 使用 \lo_list 查看大对象的 OID。 

\lo_import filename [ comment ]
    把文件存储为一个 PostgreSQL 大对象。可以带着一个该对象的注解选项。例如:
    foo=> \lo_import '/home/peter/pictures/photo.xcf' 'a picture of me'
    lo_import 152801
    响应表明此大对象得到一个对象标识 152801,如果你还想访问该对象,就应该把这个对象标识记住。 因此,我们建议总是给每个对象关联一个人类可读的注解。 那样就可以用 \lo_list 命令看到这些注解。
    注意这条命令与服务器端的 lo_import 有一些区别, 因为这条命令是本地用户在本地文件系统上操作, 而不是以服务器用户在服务器文件系统上操作。 
    
\lo_list
    显示一个目前存储在该数据库里的所有 PostgreSQL 大对象和它们的所有者的列表。 
    
\lo_unlink loid
    从数据库里删除OID为 loid 的大对象。
    提示: 使用 \lo_list 查找大对象的 OID。 

\o [ {filename | |command} ]
    把后面的查询结果保存到文件 filename 里或者把后面的查询结果定向到一个独立的 Unix shell 执行 command。 如果没有声明参数,查询输出重置为标准输出。
    "查询结果"包括所有表,命令响应和从数据库服务器来的提示, 同样还有各种各样查询数据库的反斜杠命令的输出(如 \d),但是没有错误信息。
    提示: 要用文本分散查询结果之间的输出,用 \qecho。 

\p
    打印当前查询缓冲区到标准输出。 
    
\pset parameter [ value ]
    这条命令设置影响查询结果表输出的选项。parameter 描述要设置的选项是哪一个。value 的语意也取决于它。

打印选项有:

    format
        设置输出格式为 unaligned,aligned,html, latex 或 troff-ms 之一。允许使用唯一的缩写。 (这也意味着一个字母就够了。)
        "Unaligned" (不对齐)把一条记录的所有字段都输出到一行, 用当前有效的域分隔符分隔。这主要用于生成那些要被其他程序读取的输出(tab分隔,逗号分隔)。 "Aligned" (对齐)模式是标准的,人类可读的,格式化好了的文本输出,也是缺省。 "HTML" 和 "LaTeX" 模式把表输出为可用于文档里的对应标记语言。它们还不是完整的文档! (可能对于 HTML 变化还不是太大, 但是在 LaTeX 里,你必须有一个完整的文档包装器。) 
        
    border
        第二个参数必须是一个数字。通常,数字越大,表就有越宽的边界和越多的线, 但是这个参数取决于实际的格式。在HTML模式里, 这个参数会直接翻译成border=...属性,在其他的模式里, 只有值 0 (无边界),1 (内部分隔线)和 2 (表框架)有意义。 
    
    expanded )(或者 x)
        在正常和扩展格式之间切换。当打开扩展格式时,查询结果用两列显示, 字段名称在左,数据在右。这个选项只影响正常查询结果的显示方式; psql 元命令的输出总是使用正常的格式。 这个模式在数据无法放进通常的"水平"模式的屏幕时很有用。
        所有四种输出模式都支持扩展格式。 
        
    null
        第二个参数是一个字串,用以代表字段的值为 null 时的打印输出。 缺省是什么都不打,这样很容易和类似一个空字串混淆。 因此,我们可能选择 \pset null '(null)'。 
        
    fieldsep
        声明在非对齐模式时的域分隔符。 这样我们就可以创建其他程序希望的tab或逗号分隔的输出。要设置 tab 域分隔符, 键入 \pset fieldsep '\t'。缺省域分隔符是 '|' (一个竖条符号)。
        
    footer
        切换缺省脚注 (x rows)。 
        
    recordsep
        声明在非对齐模式时的记录分隔符。缺省是换行符。 
        
    tuples_only (或者 t)
        在完全显示和只显示记录之间切换。 完全显示将显示象列头,标题和各种脚注等信息。 在这个模式下,只显示记录模式将只显示实际的表数据。 
        
    title [ text ]
        为任何随后打印的表设置标题。 这个参数可以用于给你的输出一个描述性标记。 如果不带参数,重置标题。 
    tableattr (或者 T)[ text ]
        允许你声明放在 HTML table 标记里的任何属性。例如,可以是 cellpadding 或 bgcolor。注意你可能不需要在这里声明 border ,因为已经在 \pset border 里用过了。 
    pager
        控制查询和psql帮助输出的分页器。如果设置了环境变量 PAGER, 输出被定向到指定程序,否则使用系统缺省(比如 more)。
        如果关闭了分页器,则不使用它,如果打开了,程序只在需要的时候使用分页器,也就是说, 输出是到终端,而且那个表很可能无法与屏幕匹配。 (psql 在决定何时分页时不是很完美。) \pset pager 开关分页器。我们也可以把分页器设置为 always,导致我们在任何情况下都使用分页器。
        可以在 例子 节看到这些不同格式输出的示例。
        提示: 有很多用于\pset的快速命令。参阅 \a,\C,\H, \t,\T,和 \x。 
        注意: 无参数运行 \pset是错误的。 以后这样调用将显示当前打印选项状态。 

\q
    退出psql程序。 
    
\qecho text [ ... ]
    这条命令等效于 \echo ,区别是所有输出将写入由 \o设置的输出通道。 
    
\r
    重置(清空)查询缓冲区。 
    
\s [ filename ]
    将命令行历史打印出或是存放到 filename。 如果省略 filename, 历史将输出到标准输出。这个选项只有在 psql 配置成使用 GNU Readline 库后才生效。
    注意: 在当前版本里,这个( GNU 历史库)不再是必须的了, 实际上,在程序结束时自动保存命令行历史。每次 psql 启动都会装载命令行历史。 

\set [ name [ value [ ... ] ] ]
    设置内部变量 name 为 value 或着如果给出了多于一个值, 设置为所有这些值的联接结果。如果没有给出第二个参数,只设变量不设值。要重置一个变量,使用 \unset 命令。
    有效的变量名可以包含字符,数字和下划线。 参阅下面的 变量 获取细节。
    尽管你可以设置任何变量为任意值, psql对一些变量特殊对待。它们在关于变量的节里面有文档。
    注意: 这条命令是完全和 SQL 命令 SET 不一样的。 

\t
    切换输出的列/字段名的信息头和行记数脚注。 这条命令等效于 \pset tuples_only,提供主要为了方便。 
    
\T table_options
    允许你在使用HTML输出模式时声明放在 table 标记里的属性。 这条命令等效于 \pset tableattr table_options。 
    
\w {filename | |command}
    将当前查询缓冲区输出到文件 filename 或者定向到 Unix 命令 command。 
    
\x
    切换扩展行格式。等效于 \pset expanded。 
    
\z [ pattern ]
    生成一个带有访问权限列表的数据库中所有表,视图和序列的列表。 如果给出任何pattern,则被当成一个规则表达式, 只显示匹配的表,视图和序列。
    命令 GRANT 和 REVOKE 用于设置访问权限。 参阅 GRANT 获取更多信息。
    这是 \dp("显示权限")的别名。 
    
\! [ command ]
    返回到一个独立的 Unix shell 或者执行 Unix 命令 command。 参数不会被进一步解释,shell 将看到全部参数。 
    
\?
    获得关于反斜杠命令的帮助信息。 
    各种 \d 命令都接受一个 pattern 参数,声明要显示的对象名字。* 表示"任何字符序列", 而 ? 表示"任何单个字符"。(这个表示法和 Unix 的 shell 文件名模式兼容。) 高级用户也可以使用正则表达式表示法,比如字符表,[0-9] 这样的东西来匹配"任意数字"。 要让任何这些模式匹配字符可以安字面方式解析,那就应该用双引号包围它们。
    一个包含(无引号的)句点的模式会被解析承一个模式名的模式后面跟着一个对象名的模式。 比如, \dt foo*.bar* 显示所有以foo 开头的模式里的以 bar 开头的表名字。 如果没有出现句点,那么这个模式只匹配在当前模式搜索路径中可见的对象。
[object Object]高级特性

变量

psql 提供类似通常 Unix 命令 shell 那样的变量替换特性。 变量只是简单的名称/数值对, 这里的值可以是任何长度的任何值。要设置一个变量,使用 psql 元命令 \set:
testdb=> \set foo bar
把变量"foo" 设置为值 "bar"。 要检索变量的内容,在变量名前面放上冒号然后把它用在任意斜杠命令里:
testdb=> \echo :foo
bar
注意: \set 的参数服从和其他命令一样的替换规则。 因此你可以构造有趣的引用,象 \set :foo 'something' 这样, 获得分别象Perl或 PHP那样有名的"软连接(soft links)"或"变量 变量"。 不幸的是(或者 万幸的?),用这些构造不能做任何有用的事情。另一方面, \set bar :foo 是一个非常有效的拷贝变量的方法。 

如果你不带第二个参数调用\set, 那么只是设置这个变量而没有值。 要重置(或删除)一个变量,使用命令 \unset。

psql的内部变量可以包括任意顺序, 任意数量的字母,数字和下划线。 有一些常用变量被 psql 另眼相待。它们是一些选项设置, 这些选项在运行时可以通过改变变量的值或者改变一些应用的表现状态而改变。 尽管你可以把这些变量用于其他用途,但是我们不鼓励这么做,因为程序的特性可能会很快变得非常奇怪。 通常,所有特殊对待的变量都是由大写字母组成(可能还有数字和下划线)。 为了保证和未来的最大限度的兼容性,请避免使用这样的变量。 下面是一个所有特殊对待的变量列表。

AUTOCOMMIT
    如果是 on(缺省),那么每个 SQL 命令都在成功完成后自动提交。 要推迟这种模式下的提交,你必须输入一个 BEGIN 或者 START TRANSACTION SQL 命令。 如果是 off 或者未设置,SQL 命令不会提交,知道你明确地发出 COMMIT 或者 END。 关闭自动提交的模式是通过为你明确发出一个 BEGIN 实现的, 它是放在任何尚未在一个事务块中并且自己不是 BEGIN 或者其它事务控制命令也不是那些不能在事务块里执行的命令 (比如 VACUUM)的前面。
    注意: 在关闭自动提交的模式下,你必须明确放弃任何失败的事务,方法是执行 ABORT 或者 ROLLBACK。 还要注意如果你不提交就退出会话,你的工作会丢失。 
    注意: 自动提交打开方式是 PostgreSQL 传统的行为, 但是关闭自动提交更接近 SQL 规范。如果你喜欢关闭自动提交,你应该在你的 .psqlrc 文件里设置它。 

DBNAME
    你正在联接着的数据库名称。 每次你与一个数据库联结都会设置这个值(包括程序启动),但是可以删除。 
    
ECHO
    如果置为 all, 输入的或者来自键盘或者一个脚本的所有行在分析或执行前都写到标准输出。 要在程序启动时声明这些,使用 -a如果设置为 queries, psql 只是在查询发送给服务器之前打印出来。 实现这个功能的命令行选项是 -e。 
    
ECHO_HIDDEN
    当设置了这个变量并且一个反斜杠命令查询数据库时,首先显示查询。 这样你可以学习 PostgreSQL 内部的东西并且在你自己的程序里提供类似功能。如果你设置该变量的值为 "noexec",查询只是显示出来但是实际上不发送到服务器和执行。 
    
ENCODING
    当前的客户端字符集编码。 
    
HISTCONTROL
    如果这个变量设置为 ignorespace, 以空格开始的行将不会进入历史列表。 如果设置为变量 ignoredups, 与以前历史记录里匹配的行也不会进入历史记录。值 ignoreboth是上面两个的结合。 如果删除此变量或者其值为任何与上面的值不同的东西, 所有交互模式读入的行都被保存入历史列表。
    注意: 这个特性是无耻地从 Bash 里剽窃来的。 

HISTFILE
    此文件将用于存储历史列表。缺省值是 ~/.psql_history。 比如,在 ~/.psqlrc 里使用:
    \set HISTFILE ~/.psql_history- :DBNAME
    将令 psql 为每个数据库维护一个独立的历史。
    注意: 这个特性是从 Bash 里偷学来的。 

HISTSIZE
    存在命令历史里的命令的个数。缺省值是 500。
    Note: 这个特性是无耻地从 Bash里剽窃来的。 

HOST
    当前你正联接的数据库服务器主机。 这是在每次你与数据库联接时(包括程序启动)设置的,但是可以删除。
    
IGNOREEOF
    如果删除此变量,向一个交互的 psql会话发送一个 EOF (通常是 Control-D)将终止应用。如果设置为一个数字值,那么在应用终止前该数值的 EOF 字符将被忽略。 如果设置了此变量但是没有数字值,缺省是 10。
    注意: 这个特性是无耻地从 Bash 里剽窃来的。 

LASTOID
    最后影响的oid值,即为从一条 INSERT 或 lo_insert 命令返回的值。 此变量只保证在下一条 SQL 命令的结果显示之前有效。 
    
ON_ERROR_ROLLBACK
    如果是 on,如果一个事务块里的语句产生一个错误, 那么这个错误被忽略而事务讲继续。如果是 interactive, 那么这样的错误只是在交互的会话里忽略,而不是在从读取脚本文件的时候。 如果是 off(缺省),事务块里一个语句生成的错误将会回滚整个事务。 on_error_rollback-on 的模式是通过在一个事务块的每个命令前为你隐含地发出一个 SAVEPONT 的方式工作的,在发生错误的时候回滚到该事务块。 
    
ON_ERROR_STOP
    缺省时,如果非交互的脚本碰到一个错误,象一条错误的 SQL 命令或者内部元命令,处理会继续进行。 这是 psql 的传统特性, 但是有时候我们不太希望这样。如果设置了这个变量,脚本处理将马上停止。 如果该脚本是从另外一个脚本调用的,那个脚本也会按同样的方式停止。 如果最外层的脚本不是从一次交互的 psql 会话中调用的而是用 -f 选项调用的,psql 将返回错误代码 3,以示这个情况与致命错误条件的区别(错误代码 1)。 
    
PORT
    当前你正在联接的数据库服务器的端口。 这是在每次你与数据库联接时(包括程序启动)设置的,但是可以删除。 
    
PROMPT1
PROMPT2
PROMPT3
    这些指明psql 显示的提示符看上去象什么。 参阅下面的 提示符。 
    
QUIET
    这个变量等效于命令行选项 -q。 可能在交互模式下没有什么用。 
    
SINGLELINE
    这个变量等效于设置命令行选项 -S。你可以在运行时删除或设置它。 
    
SINGLESTEP
    这个变量等效于命令行选项 -s。 
    
USER
    当前你正用于联接的数据库用户。 这是在每次你与数据库联接时(包括程序启动)设置的,但是可以删除/重置。 
    
VERBOSITY
    这个选项可以设置为值 default,verbose,或者 terse 以控制错误报告的冗余行。 
[object Object]
SQL 代换

一个附加的 psql 变量的有用特性是你可以把它们替换("代换")成正规的 SQL 语句。这样做的语法同样还是变量名前面加一个冒号(:)。

testdb=> \set foo 'my_table'
testdb=> SELECT * FROM :foo;

将会查询表my_table。变量的值是逐字拷贝的, 所以它甚至可以包含不对称的引号或反斜杠命令。你必须保证你输入的东西是有意义的。 变量替换将不会在引号引起来的 SQL 语句里面发生。

利用这个功能的一个时髦的应用是通过使用一个随后的语句中最后插入的 OID 建立一个外键仿真场景。 另一个可能用到这个机制的地方是把一个文件的内容拷贝到一个字段里面去。 首先把文件装载到一个变量然后象上面那样处理。

testdb=> \set content '\'' `cat my_file.txt` '\''
testdb=> INSERT INTO my_table VALUES (:content);

这样处理的一个可能问题是 my_file.txt 可能包含单引号。这些需要被逃逸以免在处理第三行时不会导致语法错误。 可以使用程序 sed来做这个处理:

testdb=> \set content '\'' `sed -e "s/'/\\\\\\'/g" 

    数据库服务器正在侦听的端口号。
%n

    数据库会话的用户名。 (这个值的扩展可能在一个数据库会话过程中因为 SET SESSION AUTHORIZATION 命令而改变。) 
%/

    当前数据库名称。
%~

    类似 %/, 但如果数据库是你的缺省数据库输出是"~" (波浪线(tilde))。
%#

    如果会话用户是数据库超级用户,使用 "#",否则用">"。 (这个值的扩展可能在一个数据库会话过程中因为 SET SESSION AUTHORIZATION 命令而改变。) 
%R

    对于 prompt 1 通常是 =,但是如果是单行模式则是 ^,而如果会话与数据库断开(如果 \connect 失败可能发生)是 !。对于 prompt 2 该序列被 -,*,一个单引号,一个双引号或者一个美元符代替,这取决于 psql是否等待更多的输入(因为查询没有终止,或着正在一个 /* ... */注释里面,或者因为你在引号或者美元符扩展里面)。对于 prompt 3 该序列不解释成任何东西。 
%x

    事务状态:如果不在事务块里,是一个空字串,如果在事务块里,是 *, 如果在一个失败的事务块里是 !,或者无法判断事务状态时为 ? (比如,因为没有连接)。 
%digits

    指定字节值的字符被替换到该位置。 
%:name:

    psql变量name的值。参阅 变量 节获取细节。 
%`command`

    command的输出, 类似于通常的"反勾号(back-tick)" 替换。
%[ ... %]

    提示可以包含终端控制字符,这些字符可以改变颜色,北京,或者提示文本的风格, 或者改变终端窗口的标题。为了让 Readline 的行编辑特性正确运行, 这些不可打印的控制字符必须设计成不可见的,方法是用 %[ 和 %] 包围它们。 在提示符里可能出现这些东西的多个配对。

    testdb=> \set PROMPT1 '%[%033[1;33;40m%]%n@%/%R%[%033[0m%#%] '

    这样的结果是在 VT100 兼容的可显示彩色的终端上的一个宽体(1;)黑底黄字(33;40)。 

要在提示符里插入百分号,键入%%。缺省提示符等效于 '%/%R%# ' 用于 prompts 1 和 2,以及'>> ' 用于 prompt 3。

    注意: 这个特性是无耻地从tcsh 里剽窃来的。 

[object Object]
命令行编辑

psql 为了编辑和检索命令行的方便支持 Readline 和历史库。 命令历史在 psql 退出的时候自动保存,在 psql 启动的时候装载。 还支持 Tab 补齐,尽管该补齐逻辑并不是一个 SQL 分析器必备的。 如果因某些原因你不喜欢 tab 补齐,你可以把下面几行放在你的家目录的一个叫 .inputrc 的文件里关闭这个特性:

$if psql
set disable-completion on
$endif
(这不是psql 的特性, 是 Readline 的。参考它的文档获取更多细节。)

环境

PAGER
    如果查询结果在一页里放不下,那么它们被定向到这个命令。 典型的值是 more 或者 less。 缺省的是平台相关的。我们可以用 \pset 命令关闭分页器。 
    
PGDATABASE
    缺省数据库 
    
PGHOST
PGPORT
PGUSER
    缺省连接参数
    
PSQL_EDITOR
EDITOR
VISUAL
    \e 命令使用的编辑器。这些变量是按照上面的顺序检查的;设置最早的最先使用。 
    
SHELL
    \! 命令执行的命令。 
    
TMPDIR

    存储临时文件的目录。缺省是 /tmp。 
 参考地址http://linux.51yip.com/search/psql

좋은 웹페이지 즐겨찾기