2.psql工具
psql是PostgreSQL提供的命令行工具,是DBA访问数据库的非常好的工具,既包括SQL的解析和执行,也包括执行各种PostgreSQL的内部命令。它包括单行命令方式和交互方式。通常都是采用交互方式,在需要批处理执行时用单行命令方式。
psql完整的命令行参数选项如下:
-bash-3.2$ ./psql --help
psql is the PostgreSQL interactive terminal.

用法:
psql [选项]... [数据库名字 [用户名称]]

一般选项:
-d 数据库名 声明要联接的数据库名(缺省: "postgres")
-c 命令 只运行一条命令(SQL 或者内部)然后退出
-f 文件名 执行来自文件的命令, 然后退出
-l 列出所有可用数据库, 然后退出
-v NAME=VALUE 设置 psql 变量 NAME 的值为 VALUE
-X 不要读取启动文件 (~/.psqlrc)
--help 显示此帮助信息, 然后退出
--version 显示版本信息, 然后退出

输入和输出选项:
-a 回显所有来自脚本的输入
-e 回显发送给服务器的命令
-E 显示内部命令生成的查询
-q 安静运行 (没有信息, 只有查询输出)
-o 文件名 向文件(或者 |管道)发送查询结果
-n 关闭增强的命令行编辑功能 (readline)
-s 单步模式 (核实每个查询)
-S 单行模式 (一行结束同时也标志着 SQL 命令结束)
-L FILENAME 发送会话日志到文件

输出格式选项:
-A 非对齐的表输出模式(-P format=unaligned)
-H HTML 表输出模式 (-P format=html)
-t 只打印行 (-P tuples_onle)
-T 文本 设置 HTML 表标记属性 (表宽, 边宽) (-P tableattr=)
-x 打开扩展表输出 (-P expended)
-P VAR[=ARG] 把打印选项 VAR 设置为 ARG (见 \pset 命令)
-F 字串 设置域分隔符 (缺省: "|") (-P fieldsep=)
-R 字串 设置记录分隔符 (缺省: 新行) (-P recordsep=)

联接选项:
-h 主机名 声明数据库服务器主机或套接字目录 (缺省: "本地套接字")
-p 端口 数据库服务器端口 (缺省: 5432)
-U 名字 数据库用户名称 (缺省: "postgres")
-W 提示输入口令 (将自动发生)

更多的相关信息, 在 psql 里键入 "\?" (用于内部命令) 或者 "\help"
(用于 SQL 命令), 或者参考 PostgreSQL 文档里的 psql 节

向 <pgsql-bugs@postgresql.org> 汇报臭虫. 进入psql命令行环境,可以使用的psql 内部\命令如下:
pgdb=# \?
一般选项
\c[onnect] [数据库名|- [用户名称]]
联接到新的数据库 (当前为 "pgdb")
\cd [目录名] 改变当前的工作目录
\copyright 显示 PostgreSQL 用法和发布信息
\encoding [编码]
显示或设置客户端编码
\h [名字] SQL 命令的语法帮助, 用 * 可以看所有命令的帮助
\q 退出 psql
\set [名字 [值]]
设置内部变量, 如果没有参数就列出所有
\timing 查询计时开关切换 (目前是 关闭)
\unset 名字 取消(删除)内部变量
\! [命令] 在 shell 里执行命令或者开始一个交互的 shell

查询缓冲区选项
\e [文件名] 用一个外部编辑器编辑当前查询缓冲区或者文件
\g [文件名] 向服务器发送 SQL 命令 (并且把结果写到文件或者 |管道)
\p 显示当前查询缓冲区的内容
\r 重置 (清理) 查询缓冲区
\s [文件名] 打印历史或者将其保存到文件
\w [文件名] 将查询缓冲区写出到文件

输入/输出选项
\echo [字串] 向标准输出写出文本
\i 文件名 执行来自文件的命令
\o [文件名] 向文件或者 |管道 发送所有查询结果
\qecho [字串]
向查询输出流写出文本 (见 \o)

信息选项
\d [名字] 描述表, 索引, 序列, 或者视图
\d{t|i|s|v|S} [模式] (加 "+" 获取更多信息)
列出表/索引/序列/视图/系统表
\da [模式] 列出聚集函数
\db [模式] 列出表空间 (加 "+" 获取更多的信息)
\dc [模式] 列出编码转换
\dC 列出类型转换
\dd [模式] 显示目标的注释
\dD [模式] 列出域
\df [模式] 列出函数 (加 "+" 获取更多的信息)
\dg [模式] 列出组
\dn [模式] 列出模式 (加 "+" 获取更多的信息)
\do [名字] 列出操作符
\dl 列出大对象, 和 \lo_list 一样
\dp [模式] 列出表, 视图, 序列的访问权限
\dT [模式] 列出数据类型 (加 "+" 获取更多的信息)
\du [模式] 列出用户
\l 列出所有数据库 (加 "+" 获取更多的信息)
\z [模式] 列出表, 视图, 序列的访问权限 (和 \dp 一样)

格式选项
\a 在非对齐和对齐的输出模式之间切换
\C [字串] 设置表标题, 如果参数空则取消标题
\f [字串] 为非对齐查询输出显示或设置域分隔符
\H 在 HTML 输出模式之间切换 (当前是 关闭)
\pset NAME [VALUE]
set table output option
(NAME := {format|border|expanded|fieldsep|footer|null|
numericlocale|recordsep|tuples_only|title|tableattr|pager})
\t 只显示行 (当前是 关闭)
\T [字串] 设置 HTML <表> 标记属性, 如果没有参数就取消设置
\x 在扩展输出之间切换 (目前是 关闭)

拷贝, 大对象选项
\copy ... 执行 SQL COPY, 数据流指向客户端主机
\lo_export LOBOID FILE
\lo_import FILE [COMMENT]
\lo_list
\lo_unlink LOBOID 大对象操作