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 |
切换为非对齐输出模式。默认输出模式是对齐的。 |
-c command |
--command command |
执行查询命令。command 必须是一条完全可以被服务器分析的查询字串, 或者是一个反斜杠命令。如果要混合 SQL 和 psql 内部命令。可以把字串定向到 psql 命令执行。例子: echo "\x\ select * from foo;" | psql 。 如果命令字串包含多个 SQL 命令,它们会在一个事务里处理,除非在字串里包含了明确的 BEGIN /COMMIT 命令把他们分成多个事务。 |
-d dbname |
--dbname dbname |
指定连接后要使用的数据库。 |
-e |
--echo-queries |
显示所由发送给服务器的查询。等效于把变量 ECHO 设置为 queries 。 |
-E |
--echo-hidden |
回显由 \d 和其他反斜杠命令生成的实际查询。 |
-f filename |
--file filename |
使用 filename 作为命令的语句源而不是交互式读入查询。 |
-F separator |
--field-separator separator |
使用 separator 作为域分隔符。等效于内部命令 \pset fieldsep 或 \f 。 |
-h hostname |
--host hostname |
指定连接的数据库主机。如果主机名以斜扛开头,会被当作 Unix 域套接字路径。 |
-H |
--html |
以 HTML 格式输出。等效于内部命令 \pset format html 或 \H 。 |
-l |
--list |
列出所有可用的数据库。等效于内部命令 \list 。 |
-o filename |
--output filename |
将所有查询输出定向到文件 filename。等效于内部命令 \o 。 |
-p port |
--port port |
指定连接端口,默认为 5432。 |
-P assignment |
--pset assignment |
允许在命令行上以 \pset 的风格设置打印选项。 |
-q |
--quiet |
安静地执行处理任务。 |
-R separator |
--record-separator separator |
使用 separator 做为记录分隔符。 等效于内部命令 \pset recordsep 。 |
-s |
--single-step |
进入单步模式运行。意味着每个查询在发往服务器之前都要提示用户,用这个选项也可以取消执行。此选项主要用于调试脚本。 |
-S |
--single-line |
进入单行运行模式,这时每个命令都将由换行符结束,象分号那样。 |
-t |
--tuples-only |
关闭打印列名称和结果行计数脚注等信息。等效于内部命令 \t 。 |
-T table_options |
--table-attr table_options |
允许声明在 HTML table 标记里的选项。 |
-U username |
--username username |
指定连接用户名。 |
-v assignment |
--set assignment, --variable assignment |
进行一次变量分配,象内部命令 \set 那样。如果有变量名和值,必须在命令行上用等号分隔它们。 |
-W |
--password |
连接数据库之前提示输入密码。 |
-x |
--expanded |
打开扩展表格式模式。等效于内部命令 \x 。 |
-X |
--no-psqlrc |
不读取启动文件 ~/.psqlrc 。 |
-V |
--version |
显示 psql 版本。 |
-? |
--help |
显示命令帮助。 |