《PostgreSQL学习手册客户端命令》由会员分享,可在线阅读,更多相关《PostgreSQL学习手册客户端命令(21页珍藏版)》请在金锄头文库上搜索。
1、如果您需要使用本文档,请点击下载按钮下载!零、口令文件: 在 给出其它PostgreSQL客户端命令之前,我们需要先介绍一下PostgreSQL中的口令文件。之所以在这里提前说明该文件,是因为我们在后面的示 例代码中会大量应用该文件,从而保证我们的脚本能够自动化完成。换句话说,如果在客户端命令执行时没有提供该文件,PostgreSQL的所有客户端命令 均会被口令输入提示中断。 在当前用户的HOME目录下,我们需要手工创建文件名为 .pgpass的口令文件,这样就可以在我们连接PostgreSQL服务器时,客户端命令自动读取该文件已获得登录时所需要的口令信息。该文件的格式如下: hostname
2、:port:database:username:password 以上数据是用冒号作为分隔符,总共分为五个字段,分别表示服务器主机名(IP)、服务器监听的端口号、登录访问的数据库名、登录用户名和密码,其中前四个字段都可以使用星号(*)来表示匹配任意值。见如下示例: / cat .pgpass *:5432:postgres:postgres:123456 CTRL+D #.pgpass文件的权限必须为0600,从而防止任何全局或者同组的用户访问,否则这个文件将被忽略。 / chmod 0600 .pgpass 在学习后面的客户端命令之前,我们需要根据自己的应用环境手工创建该文件,http:/
3、以便后面所有的示例代码都会用到该口令文件,这样它们就都可以以批处理的方式自动完成。一、createdb: 创建一个新的PostgreSQL数据库。该命令的使用方式如下: createdb option. dbname description 1. 命令行选项列表:选项说明-D(-tablespace=tablespace)指定数据库的缺省表空间。-e(-echo)回显createdb生成的命令并且把它发送到服务器。-E(-encoding=encoding)指定用于此数据库的字符编码方式。-l(-locale=locale)指定用于此数据库的本地化设置。-O(-owner=owner)指定新建
4、数据库的拥有者,如果未指定此选项,该值为当前登录的用户。 -T(-template=template)指定创建此数据库的模板数据库。-h(-host=host)指定PostgreSQL服务器的主机名。-p(-port=port)指定服务器的侦听端口,如不指定,则为缺省的5432。-U(-username=username)本次操作的登录用户名,如果-O选项没有指定,此数据库的Owner将为该登录用户。-w(-no-password)如果当前登录用户没有密码,可以指定该选项直接登录。如果您需要使用本文档,请点击下载按钮下载! 2. 应用示例: #1. 以postgres的身份登录。(详情参照上面
5、口令文件的内容) / psql #2. 创建表空间。 postgres=# CREATE TABLESPACE my_tablespace LOCATION /opt/PostgreSQL/9.1/mydata; CREATE TABLESPACE #3. 创建新数据库的owner。 postgres=# CREATE ROLE myuser LOGIN PASSWORD 123456; CREATE ROLE postgres=# q #4. 创建新数据库,其中本次连接的登录用户为postgres,新数据库的owner为myuser,http:/ 表空间为my_tablespace,新数据库
6、名为mydatabase。 / createdb -U postgres -O myuser -D my_tablespace -e mydatabase CREATE DATABASE mydatabase OWNER myuser TABLESPACE my_tablespace; #5. 重新登录,通过查询系统表查看该数据库是否创建成功,以及表空间和所有者是否一致。 / psql postgres=# SELECT datname,rolname,spcname FROM pg_database db, pg_authid au, pg_tablespace ts WHERE datna
7、me = mydatabase AND datdba = au.oid AND dattablespace = ts.oid; datname | rolname | spcname -+-+- mydatabase | myuser | my_tablespace (1 row)二、dropdb: 删除一个现有PostgreSQL数据库。 dropdb option. dbname 1. 命令行选项列表:选项说明-e(-echo)回显dropdb生成的命令并且把它发送到服务器。-i(-interactive)在做任何破坏性动作前提示。 -q(-quiet)不显示响应。-h(-host=hos
8、t)指定PostgreSQL服务器的主机名。-p(-port=port)指定服务器的监听端口,如不指定,则为缺省的5432。-U(-username=username)本次操作的登录用户名。-w(-no-password)如果当前登录用户没有密码,可以指定该选项直接登录。如果您需要使用本文档,请点击下载按钮下载! 2. 应用示例: #以postgres的身份连接服务器,删除mydatabase数据库。 / dropdb -U postgres -e mydatabase DROP DATABASE mydatabase; #通过查看系统表验证该数据库是否已经被删除。 / psql postgr
9、es=# SELECT count(*) FROM pg_database WHERE datname = mydatabase; count - 0 (1 row)三、reindexdb: 为一个指定的PostgreSQL数据库重建索引。 reindexdb connection-option. -table | -t table -index | -i index dbname reindexdb connection-option. -all | -a reindexdb connection-option. -system | -s dbname 1. 命令行选项列表:选项说明-a(-
10、all)重建整个数据库的索引。-e(-echo)回显reindexdb生成的命令并且把它发送到服务器。-i(-index=index)仅重建指定的索引。-q(-quiet)不显示响应。-s(-system)重建数据库系统表的索引。-t(-table=table)仅重建指定数据表的索引。-h(-host=host)指定PostgreSQL服务器的主机名。-p(-port=port)指定服务器的监听端口,如不指定,则为缺省的5432。-U(-username=username)本次操作的登录用户名。-w(-no-password)如果当前登录用户没有密码,可以指定该选项直接登录。 2. 应用示例:
11、 #仅重建数据表testtable上的全部索引。 / reindexdb -t testtable -e -U postgres postgres REINDEX TABLE testtable; #仅重建指定索引testtable_idx / reindexdb -i testtable_idx -e -U postgres postgres REINDEX INDEX testtable_idx; #重建指定数据库mydatabase的全部索引。如果您需要使用本文档,请点击下载按钮下载! / reindexdb mydatabase四、vacuumdb: 收集垃圾并且分析一个Postgre
12、SQL数据库。 vacuumdb -options -full | -f -verbose | -v -analyze | -z -t table (column ,.) dbname vacuumdb -options -all | -a -full | -f -verbose | -v -analyze | -z 1. 命令行选项列表:选项说明-a(-all)清理所有数据库。 -e(-echo)回显vacuumdb生成的命令并且把它发送到服务器。-f(-full)执行完全清理。-q(-quiet)不显示响应。-t table (column ,.)仅仅清理或分析指定的数据表,字段名只是在与
13、-analyze选项联合使用时才需要声明。-v(-verbose)在处理过程中打印详细信息。-z(-analyze)计算用于规划器的统计值。-h(-host=host)指定PostgreSQL服务器的主机名。-p(-port=port)指定服务器的监听端口,如不指定,则为缺省的5432。-U(-username=username)本次操作的登录用户名。-w(-no-password)如果当前登录用户没有密码,可以指定该选项直接登录。 2. 应用示例: #清理整个数据库mydatabase。 / vacuumdb -e mydatabase VACUUM; #清理并分析postgres数据库中的testtable表。 / vacuumdb -e -analyze -table testtable postgres VACUUM ANALYZE testtable; #清理并分析postgres数据库中的testtable表的i字段。 / vacuumdb -e -analyze -t testtable(i) postgres VACUUM ANALYZE testtable(i);五、createuser: 定义一个新的PostgreSQL用户帐户,需要说明的是只有超级用户或者是带有C