前面介绍了PostgreSQL的安装,今天介绍一下PostgreSQL常用的命令。
我们在PostgreSQL的安装目录(默认为/usr/local/pgsql )的bin目录下可以看到PostgreSQL的工具命令:
allan@ubuntu:~$ ls /usr/local/pgsql/bin/ clusterdb dropdb initdb pg_ctl pg_receivexlog postmaster createdb droplang pg_basebackup pg_dump pg_resetxlog psql createlang dropuser pg_config pg_dumpall pg_restore reindexdb createuser ecpg pg_controldata pg_isready postgres vacuumdb
基本上所有的命令都可以通过command --help 这种方式去查看具体的使用方法,这里介绍一下常用的命令的使用,并附带介绍一下涉及到的PostgreSQL的一些基础概念。
initdb
这个命令用来初始化数据库,主要干了以下几件事:
- 初始化数据集簇(database cluster)。在PostgreSQL中,所有的数据库数据都存储在数据库集簇中(当然也可以通过表空间的方式存储在其他地方,这里暂时不考虑这种情况),其实初始化数据库集簇就是在硬盘上指定一个数据存储区。
- 创建预定义的模板数据库template0和template1。在PostgreSQL中,这两个数据库比较特殊,在数据库创建之初就存在。其实刚开始只有template1一个,template0是由template1拷贝而来。后面创建的所有数据库默认都是以template1为模板创建(当然,可以使用创建数据库时可以使用-T去指定其他数据库作为模板)。所以,如果我们希望以后创建的数据库默认都有某些特性的时候,就可以去修改template1这个数据库。而这里之所以还复制了一份template0,就是因为template1是可以由用户去修改的,当我们哪天想要一份“纯净”的数据库时,就可以把template0作为模板。同时,为了保护template0,默认情况下,template0是不允许连接的。
- 生成系统表。在PostgreSQL中,有许多默认的系统表,后续再介绍。
该命令一般可以跟如下参数:
- -D:指定数据集簇的位置,如果没有指定该参数,默认使用环境变量PGDATA的值,如果没有改环境变量,则报错,比如"initdb -D /home/allan/data "。
- -E:设置新建数据库的默认编码,比如"initdb -E UTF8 "。
- -U:设置数据库超级用户用户名,如果不使用该参数,默认为执行initdb的系统用户。
- -W:设置数据库超级用户的密码,如果不使用该参数,那么超级用户密码默认为空。
- -X:设置事务日志的位置。
createuser && dropuser
该命令用来创建一个新的PostgreSQL角色,和SQL语句CREATE USER 或CREATE ROLE 相同。
这个命令的参数基本上都是设置创建的新角色的权限的,参数一般都是成对出现,小写参数表示新角色拥有什么权限,对应的大写参数表示新角色没有什么角色。常用参数如下:
- -c:指定角色的最大连接数。
- -d:新角色可以创建数据库;-D:新角色不可以创建数据库。
- -i:新角色可以继承他所在组的权限;-I:新橘色不可以继承权限。
- -l:新角色可以登录;-L:新角色不可以登录。
- -r:新角色可以创建角色;-R:新角色不可以创建角色。
- -s:新角色是超级用户;-S:新角色不是超级用户。
需要注意的是,在新版本中,role
逐渐替代user
,即角色这个概念逐渐替换用户这个概念。角色不单指用户,也可能是一个组。
我们用createuser 命令创建一个新角色以后,可以使用dropuser 这个命令来删除角色。
createdb && dropdb
该命令用来创建一个新的数据库,和SQL语句CREATE DATABASE 相同。常用参数如下:
- -D:设置数据库的表空间。
- -E:设置数据库的编码
- -l:数据库的locale设置
- -O:设置数据库的所有者
- -T:指定模板数据库,默认使用template1.新的数据库将从模板数据库拷贝而来。
想法,可以用dropdb 命令来删除一个数据库。
pgdump && pgdumpall
该命令用于将PostgreSQL数据库导出到一个备份文件,比如pg_dump db1 > /home/allan/pgsql/backup/db1.bak 。常用参数如下:
- -f:备份文件名称。
- -F:备份文件格式,比如custom、tar、plain text。
- -Z:压缩等级。
- -a:只备份数据,不含模式。
- -b:备份包含大对象。
- -C:包含创建数据库命令。
pg_dump 用于单个数据库的备份,我们也可以使用pg_dumpall 命令来备份PostgreSQL的所有数据库。
pg_restore
该命令用于从一个由pg_dump 或pg_dumpall 程序导出的备份文件中回复PostgreSQL数据库,比如pg_restore -d db1 /home/allan/pgsql/backup/db1.bak 。常用参数如下:
- -d:连接的数据库名。
- -f:备份文件名。
- -F:备份文件格式(c, t)。
- -a:只恢复数据,忽略模式。
- -C:创建目标数据库。
- -I:恢复有名称的索引。
vacuumdb
清理和分析一个PostgreSQL数据库,他是客户端程序psql环境下SQL语句VACUUM的shell脚本封装,二者功能完全相同。常用参数如下:
- -a:清理所有数据库。
- -d:清理指定命令数据库。
pg_ctl
该命令用于控制数据库的初始化、启动、停止、重启等。常见使用如下:
- pg_ctl init:作用同initdb。
- pgctl start/stop/restart:启动/停止/重启数据库。停止、重启数据库可以加"-m"指定数据库停止的模式,共有三种模式:(1)smart模式:等所有客户端连接都断开后再停止。(2)fast模式:直接停止,但是会做一些善后工作,比如数据保存等。(3)immediate模式:直接停止,不做任何工作。这种停止模式会在下一次启动的时候先进行数据库恢复。比如我们可以使用"pgctl stop -m i"快速停止数据库。
- pg_ctl reload:重新加载。一般如果我们在数据库运行期间修改了数据库的配置文件,那么就可以使用该命令来使新的配置生效,当然有的配置修改必须重启数据库才可以。
- pg_ctl status:可以查看数据库主进程的信息。
psql
psql是一个基于命令行的PostgreSQL交互式客户端程序,例如我们可以使用命令psql -h 192.168.1.98 -p 5432 -U allan postgres 登陆主机192.168.1.98上面监听端口为5432,用户为allan,数据库名为postgres的数据库。该客户端程序常用参数如下:
- -c:执行单个命令并退出。
- -d:连接的数据库的名字(可省略)。
- -f:从文件中执行命令。
- -l:列出可用的所有数据库。
- -h:数据库所在的主机IP。
- -p:数据库监听的端口。
- -U:连接数据的用户名。
- -w:不需要密码。
- -W:强制使用密码。
使用psql登陆数据库以后,我们就可以使用SQL命令进行数据库的操作,但是psql也给我们提供了一些快捷的命令(元命令),可以使用? 来查看所有元命令和功能说明。常用的命令如下:
- ?:查看所有可以使用的元命令和说明信息
- o:将查询结果保存到文件或输出到shell命令
- l:勒出所有数据库的名称、所有者、编码等信息
- q:退出数据库
- c:连接到某个数据库
- dt:列出所有表
- d:显示数据库对象的模式
- di:列出所有索引
- i:执行文件中的命令
至此,PostgreSQL常用的命令就介绍完了,具体使用的时候,我们可以使用command --help 去查看更详细的用法。
评论已关闭