### 输入
psql 接受许多命令行参数,一套丰富的后期命令(meta-commands)集,以及完整的 Postgres 所支持的 SQL 语言.最常用的命令行参数是:*dbname*要访问的数据库名称.*dbname* 缺省时是 USER 环境变量的值或(如果没有设置环境变量)当前用户的 Unix 帐户名.-c *query*要运行的单个查询.psql 将在结束时退出.命令行参数和后期命令(meta-commands)的全集将在下面的章节中介绍.
有一些环境变量可以用于取代命令行参数.另外,psql 应用使用的Postgres 前端库还寻找其他的一些变量用于配置,例如,日期/时间格式和本地时区.请参考 *PostgreSQL 程序员手册*里的有关 libpq 的章节获取更多信息.
你可以通过设置下面任何一个环境变量来避免使用命令行选项:
PGHOST数据库服务器的 DNS 主机名.将 PGHOST 设置成一个非零长的字符串将导致 TCP/IP 通讯的使用,而不是使用本地的 Unix 主控套接字.PGPORTPostgres 服务器正在侦听的端口号.缺省是5432.PGTTY从客户端支持库中用于显示信息的目的控制台.不是必须的.PGOPTION如果声明了 PGOPTION ,则其包含的选项将在任何命令行选项 *之前* 分析.PGREALMPGREALM 只是在使用了Kerberos 认证的时候使用.如果设置了这个环境变量,Postgres将试图与服务器在此范围内进行认证,并且将使用各自的识别文件(ticket files)来避免与本地识别文件冲突.请参考 *PostgreSQL 管理员手册*获取关于Kerberos 的附加的信息.
### 输出
psql 在成功完成所有查询后向 shell 中返回0,错误时返回 1,与后端的联接中断时返回 2.缺省的 TAB 分隔符将被使用.不管任何原因psql 与后端的数据库联接失败后都将返回 1.
### 描述
psql 是一个字符界面的 Postgres 前端.它允许你交互的输入查询,将它们提交给 Postgres, 然后阅读查询结果.
psql 是一个 Postgres 客户端应用.因此,在 psql 运行之前必须有一个 postmaster 进程在数据库服务器上运行.另外,必须象下面描述的那样声明数据库服务器的正确标识参数,比如 postmaster 主机名等.
当psql 启动时,它先后从 /etc/psqlrc 和 $(HOME)/.psqlrc 中读取SQL 命令,这样就允许使用 SQL 象 **SET** 这样的命令在每个会话开始的时候来设置日期风格.
### 与一个数据库联接
psql 试图与在命令行上声明了的主机和端口号上运行的数据库相联.如果因任何原因导致联接失败 (比如,权限不够,postmaster 没有在服务器上运行等).psql 将返回一条信息如下
~~~
Connection to database failed.
~~~
联接失败的原因没有说明.
### 输入查询
通常状况下,psql 提供一个带有 psql 正在与之联接的接数据库名的,后缀 "=>" 的提示符.例如.
~~~
$ psql testdbWelcome to the POSTGRESQL interactive sql monitor: Please read the file COPYRIGHT for copyright terms of POSTGRESQL type \e? for help on slash commands type \eq to quit type \eg or terminate with semicolon to execute query You are currently connected to the database: testdbtestdb=>
~~~
用户可以在这个提示符下键入 SQL 查询.除非设置了 -S 选项,输入的行将在查询终止分号出现时送到后端.
当查询正在进行时,psql 同样还轮询由 **LISTEN** 和 **NOTIFY**生成的异步通知信号**.**
psql 可以在管道序列里面使用,并且将自动检测何时它没有与一个真的控制台侦听或交谈.
### 命令行选项
psql 可接受下面的命令行选项:-A当打印输出表元素时关闭填充对齐.-c *query*声明 psql 将执行一条查询字串,*query,*然后退出.这一点对shell 脚本很有用,尤其是在 shell 脚本里与-q 选项相联时.-d *dbname*声明要联接的数据库名.等效于将 *dbname* 作为命令行最后一个域输出.-e回现送给后端的查询-f *filename*使用 *filename* 作为查询的语句源而不是交互式读入查询,该文件必须为客户前端可见.-F *separator*使用 *separator* 作为域分隔符.缺省是一个 ASCII 竖直条 ("|").-h *hostname*声明正在运行 postmaster 的主机名.如果没有此选项,将使用本地的Unix主控套接字进行通讯.-H打开 HTML 3.0 格式输出.-l列出所有可用的数据库,然后退出.其他非连接选项将被忽略.-n不使用用于输入行编辑和命令历史的行输入库.-o *filename*将所有输出定向到文件 *filename.*路径必须是客户端可写的.-p *port*声明被 postmaster 用于侦听的 TCP/IP 端口或使用的缺省本地Unix主控套接字文件句柄.缺省的是环境变量 PGPORT 的值(如果存在的话)或者是5432.-q声明 psql 将"安静地"执行处理任务.缺省时psql将打印欢迎和退出信息,并且提示输入每个查询和打印输出查询返回的行数.如果使用了此选项,这些都不出现.这在和 -c选项一起使用时很有效.-s进入单步模式运行,这时每个查询在发往后端之前都要提示用户.-S进入单行运行模式,这时每个查询都将由换行符结束,而不是分号.-t关闭打印列/字段名.这在shell脚本中与 -c 选项一起使用时有用.-T *table_options*允许你使用 HTML 3.0 格式输出时声明放在表 table ... 中的标记选项.例如,border将给你的表边框.这个选项必须与 -H 选项一起使用.-u在和数据库联接之前询问用户的用户名和口令.如果数据库不需要口令认证则这些将被忽略.如果此选项没有使用(而且没有设置 PGPASSWORD 环境变量)而数据库又需要口令认证,则联接失败.用户名将被忽略.-x打开扩展行格式模式.当此选项有效时每一行都将把列/字段名打印在左边而把列/字段值放在右边.这对于那些难以在一行输出的超长行特别有用.HTML 行输出也支持此模式.你可以通过设置环境变量来避免在命令行上键入这些参数,参阅下面环境变量的部分.
### psql 后期命令
你在 psql 里输入的任何以脱字符反斜杠('\')开头的东西都是psql后期命令.其他的都是 SQL 并且只是简单的进入当前的查询缓冲 (并且一旦你已经有了一个完整的查询,该查询将自动提交给后端).psql 后期命令也叫斜杠命令.
一个 psql 命令的格式是反斜杠后面紧跟一个命令动词,然后是任意参数.参数与命令动词和其他参数以任意个空白字符间隔.
由于历史原因,对于单字符的命令动词,你实际上不需要用空白字符将命令动词和参数分隔开.不过你最好还是加上空白字符.
下列后期命令是已定义的.
\a在打印表元素时切换字段对齐模式(开或关).\C *caption*将 HTML3.0 表标题设为 “*caption*”.\connect *dbname* [ *username* ]与一个新的数据库建立一个联接,如果没有声明 *username* 则使用缺省值.前面的联接将关闭.\copy *dbname* { FROM | TO } *filename*执行前端(客户端)拷贝.这是一个运行 SQL COPY 命令的操作,不同的是 SQL COPY 是后端在读写声明的文件,并且对应的需要后端访问和特殊的用户权限,而在此命令中 psql 读写文件并将数据从后端中取出或写入.将使用缺省的分隔符.
>
> **小技巧:**此操作不象 SQL **COPY** 命令这样高效,因为所有数据必须通过(客户/服务器))client/server IP 或套接字联接.对于大数据量的操作,另一种方法(SQL COPY)更可行.
\d [ *table* ]列出数据库中的表,或(如果声明了)表 *table* 的列/字段.如果表名是用统配符 (“*”)声明的,列出所有表和表的列/字段信息.\da列出所有可用聚集.\dd *object*列出 pg_description 里对声明的对象的描述,对象可以是一个表,表中的列/字段,类型,操作符或聚集.**小技巧:**
> 并非所有对象在
pg_description
> 里有描述.此后期命令在快速获取
Postgres
> 内部特性时很有用.
\df列出函数.\di只列出索引.\do只列出操作符.\ds只列出序列.\dS列出系统表和索引.\dt只列出非系统表.\dT列出类型.\e [ *filename* ]编辑当前查询缓冲或文件 *filename *的内容.\E [ *filename* ]编辑当前查询缓冲或文件 *filename *的内容并且在编辑结束后执行之.\f [ *separator* ]设置域分隔符.缺省是单个空白.\g [ { *filename* | |*command* } ]将当前查询输入缓冲送给后端并且(可选的)将输出放到 *filename* 或通过管道将输出送给一个分离的Unix shell 用以执行 *command.*\h [ *command* ]给出声明的 SQL 命令的语法帮助.如果 *command* 不是一个定义的 SQL 命令(或在 psql 里没有文档),或没有声明 *command* ,这时 psql将列出可获得帮助的所有命令的列表.如果命令 *command* 是一个通配符(“*”),则给出所有 SQL 命令的语法帮助.\H切换 HTML3 输出.等效于 -H 命令行选项.\i *filename*从文件 *filename* 中读取查询到输入缓冲.\l列出服务器上所有数据库.\m切换老式监视器样的表输出,这时表周围有边界字符包围着.这是标准 SQL 输出.缺省时,psql 只包括列/字段间的分隔符.\o [ { *filename* | |*command* } ]将后面的查询结果输出到文件 *filename* 或通过管道将后面结果输出到一个独立的Unix shell 里执行 *command.*如果没有声明参数,将查询结果输出到 stdout.\p打印当前查询缓冲区.\q退出 psql 程序.\r重置(清空)查询缓冲区.\s [ *filename* ]将命令行历史打印出或是存放到 *filename.*如果省略 *filename* ,将不会把后继的命令存放到历史文件中.此选项只有在 psql 配置成使用输入行时才有效.\t切换输出的列/字段名的信息头和行记数脚注(缺省是开).\T *table_options*允许你在使用HTML 3.0 格式输出时声明放在表 table ... 中的标记选项.例如,border 将给你的表以边框.这必须和 **\H** 后期命令一起使用.\x切换扩展行格式.当打开时,每一行将在左边打印列/字段名而在右边打印列/字段值.这对于那些不能在一行输出的超长行是很有用的.HTML 行输出模式也支持这个标记.\w *filename*将当前查询缓冲区输出到文件 *filename.*\z生成一个带有正确 ACL(赋予/禁止 权限)的数据库中所有表的输出列表.\! [ *command* ]回到一个独立的Unix shell或执行一个Unix 命令 *command.*\?获得关于反斜杠 (“\”) 命令的帮助.
- 数据表
- 模式Schema
- 表的继承和分区
- 常用数据类型
- 函数和操作符-一
- 函数和操作符-二
- 函数和操作符-三
- 索引
- 事物隔离
- 性能提升技巧
- 服务器配置
- 角色和权限
- 数据库管理
- 数据库维护
- 系统表
- 系统视图
- SQL语言函数
- PL-pgSQL过程语言
- PostgreSQL 序列(SEQUENCE)
- PostgreSQL的时间-日期函数使用
- PostgreSQL 查看数据库,索引,表,表空间大小
- 用以查询某表的详细 包含表字段的注释信息
- PostgreSQL 系统表查看系统信息
- postgre存储过程简单实用方法
- PostgreSQL实用日常维护SQL
- PostgreSQL的时间函数使用整理
- 命令
- pg_ctl控制服务器
- initdb 初始化数据库簇
- createdb创建数据库
- dropdb 删除数据库
- createuser创建用户
- dropuser 删除用户
- psql交互式工具
- psql命令手册
- pg_dump 数据库转储
- pg_restore恢复数据库
- vacuumdb 清理优化数据库
- reindexdb 数据库重创索引
- createlang 安装过程语言
- droplang 删除过程语言
- pg_upgrade 升级数据库簇
- 调试存储过程
- 客户端命令-一
- 客户端命令-二
- 使用技巧
- PostgreSQL删除重复数据
- postgresql 小技巧
- PostgreSQL的10进制与16进制互转
- PostgreSQL的汉字转拼音
- Postgres重复数据的更新一例
- PostgreSQL使用with一例
- PostgreSQL在函数内返回returning
- PostgreSQL中的group_concat使用
- PostgreSQL数据库切割和组合字段函数
- postgresql重复数据的删除
- PostgreSQL的递归查询(with recursive)
- PostgreSQL函数如何返回数据集
- PostgreSQL分区表(Table Partitioning)应用 - David_Tang - 博客园
- PostgreSQL: function 返回结果集多列和单列的例子
- 利用pgAgent创建定时任务
- 浅谈 PostgreSQL 类型转换类似Oracle
- postgresql在windows(包括win7)下的安装配置
- PostgreSQL简介、安装、用户管理、启动关闭、创建删除数据库 (2010-11-08 12-52-51)转载▼标签: 杂谈分类: PostgreSQL
- PostgreSQL的generate_series函数应用
- PostgreSQL 8.3.1 全文检索(Full Text Search)
- postgresql record 使用
- 备份恢复
- PostgreSQL基于时间点恢复(PITR)
- Postgresql基于时间点恢复PITR案例(二)
- Postgres逻辑备份脚本
- Postgres invalid command \N数据恢复处理