zzxworld

PostgreSQL psql 命令使用指南

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 显示命令帮助。