PostgreSQL数据库相关命令的使用
PostgreSQL 在后台运行的是一个叫做 postmaster 的程序,缺省的 TCP/IP 端口为 5432。
在启动 psql 之前,当然要求 psql 在你的 PATH 路径上,所以我们需要指定:
$ export PATH=$PATH:/usr/local/pgsql/bin
然后我们就可以进入了:
[user@host user]$ psql testdb
Welcome to psql, the PostgreSQL interactive terminal.
Type: copyright for distribution terms
h for help with SQL commands
? for help on internal slash commands
g or terminate with semicolon to execute query
q to quit
testdb=#
所有的 psql 相关的命令都必须以 开头,如果不知道某个命令的用法,可以用 ? 来找到帮助。
因此,综合上面的说明,我们可以知道:
dt 命令是显示表
di 显示索引
ds 显示序列
dv 显示视图
dp 显示权限
dS 显示系统表
dl 显示 lobjects
d tablename 显示表的结构/索引/序列
d indexname 显示索引的详细信息
执行过的查询语句可以用 s i 分别存盘和调入。
psql 中 SQL 语句的输入和 MySQL 类似,一直到分号才结束,但是不同的是,在分号结束前的换行,在 MySQL 里面是 > 符号,而在 psql 里是 -# 符号。
列出当前用户(跟系统帐号同名的数据库帐号)
$ psql -l
可以使用 -U 参数指定帐号
$ psql -l -U postgres
使用postgres帐号登录数据库(不指定数据库时,访问postgres这个库):
$ psql -U postgres [-d DBName]
查看用户能访问的数据库:
postgres=# l
List of databases
Name | Owner |
Encoding
-----------+----------+----------
postgres | postgres | UTF8
template0 | postgres | UTF8
template1 | postgres | UTF8
test | postgres | UTF8
test1 | postgres | UTF8
(5 rows)
可以用 c DBName 来连接和切换数据库
test1=# c test1
查看表:
test1=# d
List of relations
Schema
|
Name
| Type | Owner
--------+--------------------------+----------+----------
public |
acol_statusstring |
table | postgres
public | acol_sys_displst_setting | table |
postgres
public |
hibernate_sequence | sequence |
postgres
public |
jbpm_action
| table | postgres
public |
jbpm_bytearray
| table | postgres
查看某一个表的结构:
test1=# d jbpm_action
Table "public.jbpm_action"
Column
|
Type |
Modifiers
------------------------+-------------------------+-----------
id_
|
bigint
| not null
class
|
character(1)
| not null
name_
| character varying(255) |
ispropagationallowed_ |
boolean
|
actionexpression_ | character
varying(255) |
isasync_
|
boolean
|
referencedaction_ |
bigint
|
actiondelegation_ |
bigint
|
event_
|
bigint
|
processdefinition_ |
bigint
|
timername_
| character varying(255) |
duedate_
| character varying(255) |
repeat_
| character varying(255) |
transitionname_ |
character varying(255) |
timeraction_
|
bigint
|
expression_
| character varying(4000) |
eventindex_
|
integer
|
exceptionhandler_ |
bigint
|
exceptionhandlerindex_ |
integer
|
Indexes:
"jbpm_action_pkey" PRIMARY KEY, btree (id_)
"idx_action_actndl" btree
(actiondelegation_)
"idx_action_event" btree (event_)
"idx_action_procdf" btree
(processdefinition_)
Foreign-key constraints:
"fk_action_actndel" FOREIGN KEY
(actiondelegation_) REFERENCES jbpm_delegation(id_)
"fk_action_event" FOREIGN KEY (event_)
REFERENCES jbpm_event(id_)
"fk_action_expthdl" FOREIGN KEY
(exceptionhandler_) REFERENCES jbpm_exceptionhandler(id_)
"fk_action_procdef" FOREIGN KEY
(processdefinition_) REFERENCES jbpm_processdefinition(id_)
"fk_action_refact" FOREIGN KEY
(referencedaction_) REFERENCES jbpm_action(id_)
"fk_crtetimeract_ta" FOREIGN KEY (timeraction_)
REFERENCES jbpm_action(id_)
执行查询SQL:
test1=# select * from jbpm_action limit 1;
查看当前执行的查询(类似mysql的show processlist):
test1=# SELECT pg_stat_get_backend_pid(s.backendid) AS
procpid,pg_stat_get_backend_activity(s.backendid) AS current_query
FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS s;
查看当前用户:
test1=# du
List of roles
Role name | Superuser | Create role | Create DB | Connections
| Member of
-----------+-----------+-------------+-----------+-------------+-----------
postgres | yes |
yes |
yes | no
limit |
(1 row)
a
在非对齐和对齐的输出模式之间切换
c[onnect] [数据库名|- [用户名]]
联接到新的数据库 (当前为 "rftdatabase")
C [字串] 设置表标题, 如果参数空则取消标题
cd [目录名] 改变当前的工作目录
copy ... 执行 SQL COPY,
数据流指向客户端主机
copyright 显示 PostgreSQL 用法和发布信息
d [名字] 描述表, 索引, 序列, 或者视图
列出表/索引/序列/视图/系统表
d{t|i|s|v|S} [模式] (加 "+" 获取更多信息)
列出表/索引/序列/视图/系统表
da [模式] 列出聚集函数
dd [模式] 显示目标的注释
dD [模式] 列出域
df [模式] 列出函数 (加 "+" 获取更多的信息)
do [名字] 列出操作符
dl
列出大对象, 和 lo_list 一样
dp [模式] 列出表访问权限
dT [模式] 列出数据类型 (加 "+" 获取更多的信息)
du [模式] 列出用户
e [文件名] 用一个外部编辑器编辑当前查询缓冲区或者文件
echo [字串] 向标准输出写出文本
encoding [编码] 设置客户端编码
f [字串] 设置域分隔符
g 文件名 向服务器发送 SQL 命令
(并且把结果写到文件或者 |管道)
h [名字] SQL 命令的语法帮助, 用 *
可以看所有命令的帮助
H
在 HTML 输出模式之间切换 (当前是 关闭)
i 文件名 执行来自文件的命令
l
列出所有数据库
lo_export, lo_import, lo_list, lo_unlink
大对象操作
o 文件名 向文件或者 |管道 发送所有查询结果
p
显示当前查询缓冲区的内容
pset 名字 [值] 设置表的输出选项 (NAME :=
{foramt|border|expaned|
(名字 := {foramt|border|expanded|fieldsep|null|recordsep|
tuples_only|title|tableattr|pager})
q
退出 psql
qecho [字串] 向查询输出流写出文本 (见 o)
r
重置 (清理) 查询缓冲区
s [文件名] 打印历史或者将其保存到文件
set [名字 [值]] 设置内部变量, 如果没有参数就列出所有
t
只显示行 (当前是 关闭)
T [字串] 设置 HTML <表>标记属性,
如果没有参数就取消设置
timing 查询计时开关切换
(目前是 关闭)
unset 名字 取消(删除)内部变量
w [文件名] 将当前查询缓冲区写出到文件
x
在扩展输出之间切换 (目前是 关闭)
z [模式] 列出表访问权限 (和 dp 一样)
! [命令] 在 shell 里执行命令或者开始一个交互的
shell
copy host_performance from '/home/maoquan/loaddata/t-15-youxiangyunyingbu' with DELIMITER ','
PostgreSQL数据库相关命令的使用