psql 是 PostgreSQL 数据库的 shell 程序,或者说是一个命令式的客户端。在终端环境,只有用它才能连接 PostgreSQL 数据库并执行各种数据库操作。本文总结了这个命令程序在终端环境下的使用以及可用选项参数。
阅读之前请注意,使用 psql 命令连接到 PostgreSQL 数据库后,会使用到一种以 \ 开头的命令,这种命令被称为 psql 的内部命令,或是元命令(meta commands)。本文不涉及到此类命令。
psql 命令用法
psql [选项...] [数据库名称 [用户名]]
psql 命令示例
使用 postgres 用户和 5432 端口,连接到位于 127.0.0.1 上的 PostgreSQL 数据库服务:
psql -h127.0.0.1 -Upostgres -p5432
跟上面一样建立数据库连接,并指定了连接成功后要使用的数据库 wordpress:
psql -h127.0.0.1 -Upostgres -p5432 -dwordpress
建立数据库连接后输出可用的数据库名称:
psql -h127.0.0.1 -Upostgres -p5432 -l
psql 命令选项参考
| 缩写 | 完整名称 | 说明 |
|---|---|---|
-a |
--echo-all |
在读取行时向屏幕打印所有内容。 |
-A |
--no-align |
切换为非对齐输出模式。默认输出模式是对齐的。 |
-ccommand |
--commandcommand |
执行查询命令。command 必须是一条完全可以被服务器分析的查询字串, 或者是一个反斜杠命令。如果要混合 SQL 和 psql 内部命令。可以把字串定向到 psql 命令执行。例子: echo "\x\ select * from foo;" | psql。 如果命令字串包含多个 SQL 命令,它们会在一个事务里处理,除非在字串里包含了明确的 BEGIN/COMMIT 命令把他们分成多个事务。 |
-ddbname |
--dbnamedbname |
指定连接后要使用的数据库。 |
-e |
--echo-queries |
显示所由发送给服务器的查询。等效于把变量 ECHO 设置为 queries。 |
-E |
--echo-hidden |
回显由 \d 和其他反斜杠命令生成的实际查询。 |
-ffilename |
--filefilename |
使用 filename 作为命令的语句源而不是交互式读入查询。 |
-Fseparator |
--field-separatorseparator |
使用 separator 作为域分隔符。等效于内部命令 \pset fieldsep 或 \f。 |
-hhostname |
--hosthostname |
指定连接的数据库主机。如果主机名以斜扛开头,会被当作 Unix 域套接字路径。 |
-H |
--html |
以 HTML 格式输出。等效于内部命令 \pset format html 或 \H。 |
-l |
--list |
列出所有可用的数据库。等效于内部命令 \list。 |
-ofilename |
--outputfilename |
将所有查询输出定向到文件 filename。等效于内部命令 \o。 |
-pport |
--portport |
指定连接端口,默认为 5432。 |
-Passignment |
--psetassignment |
允许在命令行上以 \pset 的风格设置打印选项。 |
-q |
--quiet |
安静地执行处理任务。 |
-Rseparator |
--record-separatorseparator |
使用 separator 做为记录分隔符。 等效于内部命令 \pset recordsep。 |
-s |
--single-step |
进入单步模式运行。意味着每个查询在发往服务器之前都要提示用户,用这个选项也可以取消执行。此选项主要用于调试脚本。 |
-S |
--single-line |
进入单行运行模式,这时每个命令都将由换行符结束,象分号那样。 |
-t |
--tuples-only |
关闭打印列名称和结果行计数脚注等信息。等效于内部命令 \t。 |
-Ttable_options |
--table-attrtable_options |
允许声明在 HTML table 标记里的选项。 |
-Uusername |
--usernameusername |
指定连接用户名。 |
-vassignment |
--setassignment, --variableassignment |
进行一次变量分配,象内部命令 \set 那样。如果有变量名和值,必须在命令行上用等号分隔它们。 |
-W |
--password |
连接数据库之前提示输入密码。 |
-x |
--expanded |
打开扩展表格式模式。等效于内部命令 \x。 |
-X |
--no-psqlrc |
不读取启动文件 ~/.psqlrc。 |
-V |
--version |
显示 psql 版本。 |
-? |
--help |
显示命令帮助。 |