<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-equiv="Content-Language" content="zh-CN"><link href="stylesheet.css" media="all" rel="stylesheet" type="text/css">
<title>psql</title>
</head><body class="REFENTRY">
<div>
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><th colspan="5" align="center" valign="bottom">PostgreSQL 8.2.3 中文文档</th></tr>
<tr><td width="10%" align="left" valign="top"><a href="app-pgrestore.html" accesskey="P">后退</a></td><td width="10%" align="left" valign="top"><a href="app-pgrestore.html">快退</a></td><td width="60%" align="center" valign="bottom"></td><td width="10%" align="right" valign="top"><a href="app-reindexdb.html">快进</a></td><td width="10%" align="right" valign="top"><a href="app-reindexdb.html" accesskey="N">前进</a></td></tr>
</table>
<hr align="LEFT" width="100%"></div>
<h1><a name="APP-PSQL"></a><span class="APPLICATION">psql</span></h1>
<div class="REFNAMEDIV"><a name="AEN58117"></a><h2>名称</h2><span class="APPLICATION">psql</span> -- PostgreSQL 交互终端</div>
<a name="AEN58122"></a>
<div class="REFSYNOPSISDIV"><a name="AEN58124"></a><h2>语法</h2>
<p><tt class="COMMAND">psql</tt> [<tt class="REPLACEABLE"><i>option</i></tt>...] [<tt class="REPLACEABLE"><i>dbname</i></tt> [<tt class="REPLACEABLE"><i>username</i></tt>]]</p>
</div>
<div class="REFSECT1"><a name="AEN58133"></a><h2>描述</h2>
<p><span class="APPLICATION">psql</span> 是一个以终端为基础的 PostgreSQL 前端。它允许你交互地键入查询,然后把它们发出给 PostgreSQL ,再显示查询的结果。另外,输入可以来自一个文件。还有,它提供了一些元命令和多种类似 shell 的特性来实现书写脚本以及对大量任务的自动化。</p>
</div>
<div class="REFSECT1"><a name="R1-APP-PSQL-3"></a><h2>选项</h2>
<div class="VARIABLELIST">
<dl>
<dt><tt class="OPTION">-a</tt><br><tt class="OPTION">--echo-all</tt></dt>
<dd><p>在读取行时向标准输出打印所有内容。这个选项在脚本处理时比交互模式时更有用。这个选项等效于设置 <tt class="VARNAME">ECHO</tt> 变量为 <tt class="LITERAL">all</tt></p></dd>
<dt><tt class="OPTION">-A</tt><br><tt class="OPTION">--no-align</tt></dt>
<dd><p>切换为非对齐输出模式。缺省输出模式是对齐的。</p></dd>
<dt><tt class="OPTION">-c <tt class="REPLACEABLE"><i>command</i></tt></tt><br><tt class="OPTION">--command <tt class="REPLACEABLE"><i>command</i></tt></tt></dt>
<dd><p>声明 <span class="APPLICATION">psql</span> 将执行一条查询字符串 <tt class="REPLACEABLE"><i>command</i></tt> ,然后退出。这一点在 shell 脚本里很有用。</p>
<p><tt class="REPLACEABLE"><i>command</i></tt> 必须是一条完全可以被服务器分析的字符串(也就是不包含 <span class="APPLICATION">psql</span> 特有的特性),或者是一个反斜杠命令。这样你就不会混合 SQL 和 <span class="APPLICATION">psql</span> 元命令。要想混合使用,你可以把字符串重定向到 <span class="APPLICATION">psql</span> 里,像这样:<tt class="LITERAL">echo '\x \\ SELECT * FROM foo;' | psql</tt> (<tt class="LITERAL">\\</tt> 用于隔开元命令)。</p>
<p>如果命令字符串包含多个 SQL 命令,那么他们将在一个事务里处理,除非在字符串里包含了明确的 <tt class="COMMAND">BEGIN</tt>/<tt class="COMMAND">COMMIT</tt> 命令把他们分成多个事务。这个和从 <span class="APPLICATION">psql</span> 的标准输入里给它填充相同字符串不同。</p></dd>
<dt><tt class="OPTION">-d <tt class="REPLACEABLE"><i>dbname</i></tt></tt><br><tt class="OPTION">--dbname <tt class="REPLACEABLE"><i>dbname</i></tt></tt></dt>
<dd><p>声明想要连接的数据库名称。等效于在命令行行上把 <tt class="REPLACEABLE"><i>dbname</i></tt> 声明为第一个非选项参数。</p></dd>
<dt><tt class="OPTION">-e</tt><br><tt class="OPTION">--echo-queries</tt></dt>
<dd><p>把所有发送给服务器的查询同时也回显到标准输出。等效于把变量 <tt class="VARNAME">ECHO</tt> 设置为 <tt class="LITERAL">queries</tt></p></dd>
<dt><tt class="OPTION">-E</tt><br><tt class="OPTION">--echo-hidden</tt></dt>
<dd><p>回显由 <tt class="COMMAND">\d</tt> 和其它反斜杠命令生成的实际查询。你可以使用这个命令学习 <span class="APPLICATION">psql</span> 的内部操作。这等效于在 <span class="APPLICATION">psql</span> 里设置变量 <tt class="VARNAME">ECHO_HIDDEN</tt> </p></dd>
<dt><tt class="OPTION">-f <tt class="REPLACEABLE"><i>filename</i></tt></tt><br><tt class="OPTION">--file <tt class="REPLACEABLE"><i>filename</i></tt></tt></dt>
<dd><p>使用 <tt class="REPLACEABLE"><i>filename</i></tt> 作为命令的语句源而不是交互式读入查询。<span class="APPLICATION">psql</span> 将在处理完文件后结束。这个选项在很多方面等效于内部命令 <tt class="COMMAND">\i</tt></p>
<p>如果 <tt class="REPLACEABLE"><i>filename</i></tt> 是 <tt class="LITERAL">-</tt>(连字符),则从标准输入读取。</p>
<p>使用这个选项与使用 <tt class="LITERAL">psql < <tt class="REPLACEABLE"><i>filename</i></tt></tt> 有微小的区别。通常,两者都回按照你预期那样运行,但是使用 <tt class="LITERAL">-f</tt> 打开了一些很好的特性,比如带行号的错误信息。而且,使用这个选项还可能减小启动的开销。另一方面,如果你把所有内容手工输入,使用 shell 输入定向的方式(理论上)能保证生成和你已经得到的完全一样的输出。</p></dd>
<dt><tt class="OPTION">-F <tt class="REPLACEABLE"><i>separator</i></tt></tt><br><tt class="OPTION">--field-separator <tt class="REPLACEABLE"><i>separator</i></tt></tt></dt>
<dd><p>使用 <tt class="REPLACEABLE"><i>separator</i></tt> 作为未对齐输出的域分隔符。等效于 <tt class="COMMAND">\pset fieldsep</tt> 或 <tt class="COMMAND">\f</tt></p></dd>
<dt><tt class="OPTION">-h <tt class="REPLACEABLE"><i>hostname</i></tt></tt><br><tt class="OPTION">--host <tt class="REPLACEABLE"><i>hostname</i></tt></tt></dt>
<dd><p>指定正在运行服务器的主机名。如果主机名以斜杠开头,则它被用作到 Unix 域套接字的路径。</p></dd>
<dt><tt class="OPTION">-H</tt><br><tt class="OPTION">--html</tt></dt>
<dd><p>打开 HTML 格式输出。等效于 <tt class="LITERAL">\pset format html</tt> 或 <tt class="COMMAND">\H</tt> 命令。</p></dd>
<dt><tt class="OPTION">-l</tt><br><tt class="OPTION">--list</tt></dt>
<dd><p>列出所有可用的数据库,然后退出。其它非连接选项将被忽略。类似于内部命令 <tt class="COMMAND">\list</tt></p></dd>
<dt><tt class="OPTION">-L <tt class="REPLACEABLE"><i>filename</i></tt></tt><br><tt class="OPTION">--log-file <tt class="REPLACEABLE"><i>filename</i></tt></tt></dt>
<dd><p>除了正常的输出源之外,把所有查询输出记录到文件 <tt class="REPLACEABLE"><i>filename</i></tt></p></dd>
<dt><tt class="OPTION">-o <tt class="REPLACEABLE"><i>filename</i></tt></tt><br><tt class="OPTION">--output <tt class="REPLACEABLE"><i>filename</i></tt></tt></dt>
<dd><p>将所有查询输出重定向到文件 <tt class="REPLACEABLE"><i>filename</i></tt> 。这个选项等效于 <tt class="COMMAND">\o</tt> 命令。</p></dd>
<dt><tt class="OPTION">-p <tt class="REPLACEABLE"><i>port</i></tt></tt><br><tt class="OPTION">--port <tt class="REPLACEABLE"><i>port</i></tt></tt></dt>
<dd><p>指定服务器侦听的 TCP 端口或本地 Unix 域套接字文件的扩展。缺省使用环境变量 <tt class="ENVAR">PGPORT</tt> 的值,如果没有设置的话则使用编译时声明的端口(通常是 5432)。</p></dd>
<dt><tt class="OPTION">-P <tt class="REPLACEABLE"><i>assig