ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:26.55KB ,
资源ID:12931810      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12931810.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(PostgreSQL学习手册.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

PostgreSQL学习手册.docx

1、PostgreSQL学习手册零、口令文件: 在 给出其它PostgreSQL客户端命令之前,我们需要先介绍一下PostgreSQL中的口令文件。之所以在这里提前说明该文件,是因为我们在后面的示 例代码中会大量应用该文件,从而保证我们的脚本能够自动化完成。换句话说,如果在客户端命令执行时没有提供该文件,PostgreSQL的所有客户端命令 均会被口令输入提示中断。 在当前用户的HOME目录下,我们需要手工创建文件名为 .pgpass的口令文件,这样就可以在我们连接PostgreSQL服务器时,客户端命令自动读取该文件已获得登录时所需要的口令信息。该文件的格式如下: hostname:port:d

2、atabase:username:password 以上数据是用冒号作为分隔符,总共分为五个字段,分别表示服务器主机名(IP)、服务器监听的端口号、登录访问的数据库名、登录用户名和密码,其中前四个字段都可以使用星号(*)来表示匹配任意值。见如下示例: / cat .pgpass *:5432:postgres:postgres:123456 CTRL+D #.pgpass文件的权限必须为0600,从而防止任何全局或者同组的用户访问,否则这个文件将被忽略。 / chmod 0600 .pgpass 在学习后面的客户端命令之前,我们需要根据自己的应用环境手工创建该文件, 以便后面所有的示例代码都会

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的身份登录。(详情参照上面口令文件的内容) / psql #2. 创建表空间。 postgre

5、s=# CREATE TABLESPACE my_tablespace LOCATION /opt/PostgreSQL/mydata; CREATE TABLESPACE #3. 创建新数据库的owner。 postgres=# CREATE ROLE myuser LOGIN PASSWORD 123456; CREATE ROLE postgres=# q #4. 创建新数据库,其中本次连接的登录用户为postgres,新数据库的owner为myuser, 表空间为my_tablespace,新数据库名为mydatabase。 / createdb -U postgres -O myus

6、er -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 datname = mydatabase AND datdba = AND dattablespa

7、ce = ; datname | rolname | spcname -+-+- mydatabase | myuser | my_tablespace (1 row)二、dropdb: 删除一个现有PostgreSQL数据库。 dropdb option. dbname 1. 命令行选项列表:选项说明-e(-echo)回显dropdb生成的命令并且把它发送到服务器。-i(-interactive)在做任何破坏性动作前提示。 -q(-quiet)不显示响应。-h(-host=host)指定PostgreSQL服务器的主机名。-p(-port=port)指定服务器的监听端口,如不指定,则为缺省的

8、5432。-U(-username=username)本次操作的登录用户名。-w(-no-password)如果当前登录用户没有密码,可以指定该选项直接登录。 2. 应用示例: #以postgres的身份连接服务器,删除mydatabase数据库。 / dropdb -U postgres -e mydatabase DROP DATABASE mydatabase; #通过查看系统表验证该数据库是否已经被删除。 / psql postgres=# SELECT count(*) FROM pg_database WHERE datname = mydatabase; count - 0 (1

9、 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(-all)重建整个数据库的索引。-e(-echo)回显reindexdb生成的命令并且把它发送到服务器。-i(-index=index)仅重建指定的索引。-q

10、(-quiet)不显示响应。-s(-system)重建数据库系统表的索引。-t(-table=table)仅重建指定数据表的索引。-h(-host=host)指定PostgreSQL服务器的主机名。-p(-port=port)指定服务器的监听端口,如不指定,则为缺省的5432。-U(-username=username)本次操作的登录用户名。-w(-no-password)如果当前登录用户没有密码,可以指定该选项直接登录。 2. 应用示例: #仅重建数据表testtable上的全部索引。 / reindexdb -t testtable -e -U postgres postgres REIN

11、DEX TABLE testtable; #仅重建指定索引testtable_idx / reindexdb -i testtable_idx -e -U postgres postgres REINDEX INDEX testtable_idx; #重建指定数据库mydatabase的全部索引。 / reindexdb mydatabase四、vacuumdb: 收集垃圾并且分析一个PostgreSQL数据库。 vacuumdb -options -full | -f -verbose | -v -analyze | -z -t table (column ,.) dbname vacuum

12、db -options -all | -a -full | -f -verbose | -v -analyze | -z 1. 命令行选项列表:选项说明-a(-all)清理所有数据库。 -e(-echo)回显vacuumdb生成的命令并且把它发送到服务器。-f(-full)执行完全清理。-q(-quiet)不显示响应。-t table (column ,.)仅仅清理或分析指定的数据表,字段名只是在与-analyze选项联合使用时才需要声明。-v(-verbose)在处理过程中打印详细信息。-z(-analyze)计算用于规划器的统计值。-h(-host=host)指定PostgreSQL服务器

13、的主机名。-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; #清理并分析postgr

14、es数据库中的testtable表的i字段。 / vacuumdb -e -analyze -t testtable(i) postgres VACUUM ANALYZE testtable(i);五、createuser: 定义一个新的PostgreSQL用户帐户,需要说明的是只有超级用户或者是带有CREATEROLE权限的用户才可以执行该命令。如果希望创建的是超级用户,那么只能以超级用户的身份执行该命令,换句话说,带有CREATEROLE权限的普通用户无法创建超级用户。该命令的使用方式如下: createuser option. username 1. 命令行选项列表:选项说明-c num

15、ber设置新创建用户的最大连接数,缺省为没有限制。-d(-createdb)允许该新建用户创建数据库。-D(-no-createdb)禁止该新建用户创建数据库。 -e(-echo)回显createuser生成的命令并且把它发送到服务器。-E(-encrypted)对保存在数据库里的用户口令加密。如果没有声明, 则使用缺省值。 -i(-inherit)新创建的角色将自动继承它的组角色的权限。-I(-no-inherit)新创建的角色不会自动继承它的组角色的权限。-l(-login)新角色将被授予登录权限,该选项为缺省选项。-L(-no-login)新角色没有被授予登录权限。-N(-unencry

16、pted)不对保存在数据库里的用户口令加密。如果没有声明, 则使用缺省值。-P(-pwprompt)如果给出该选项,在创建用户时将提示设置口令。-r(-createrole)新角色被授予创建数据库的权限。-R(-no-createrole)新角色没有被授予创建数据库的权限。-s(-superuser)新角色为超级用户。-S(-no-superuser)新角色不是超级用户。-h(-host=host)指定PostgreSQL服务器的主机名。-p(-port=port)指定服务器的监听端口,如不指定,则为缺省的5432。-U(-username=username)本次操作的登录用户名。-w(-no

17、-password)如果当前登录用户没有密码,可以指定该选项直接登录。 2. 应用示例: # 对于有些没有缺省设置的选项,如-(d/D)、-(s/S)和-(r/R),如果在命令行中没有直接指定,那么在执行该命令是将会给出提示信息。 # 需要注意的是该提示将会挂起自动化脚本,直到输入后命令才会继续执行。 / createuser -U postgres myuser Shall the new role be a superuser? (y/n) n Shall the new role be allowed to create databases? (y/n) y Shall the new

18、role be allowed to create more new roles? (y/n) n CREATE ROLE myuser NOSUPERUSER CREATEDB NOCREATEROLE INHERIT LOGIN; # 通过psql登录后查看系统视图,以验证该用户是否成功创建,以及新角色的权限是否正确。 / psql postgres=# SELECT rolname,rolsuper,rolinherit,rolcreaterole,rolcreatedb,rolcanlogin FROM pg_roles WHERE rolname = myuser; rolname

19、| rolsuper | rolinherit | rolcreaterole | rolcreatedb | rolcanlogin -+-+-+-+-+- myuser | f | t | f | t | t (1 row) # 为了保证自动化脚本不会被该命令的提示挂起,我们需要在执行该命令时指定所有没有缺省值的选项。 / createuser -U postgres -e -S -D -R myuser2 CREATE ROLE myuser2 NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN; # 我们可以在创建用户时即刻指定该用户的密

20、码,该操作由-P选项完成,然而这样的用法一定会挂起自动化脚本, # 因此我们可以采用一种折中的办法,即在创建用户时不指定密码,在自动化脚本执行成功后再手工该用户的密码。 / createuser -P -s -e myuser3 Enter password for new role: Enter it again: CREATE ROLE myuser3 PASSWORD md5fe54c4f3129f2a766f53e4f4c9d2a698 SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;六、dropuser: 删除一个PostgreSQL用户帐户,

21、需要说明的是只有超级用户或带有CREATEROLE权限的用户可以执行该命令,如果要删除超级用户,只能通过超级用户的身份执行该命令。该命令的使用方式如下: dropuser option. username 1. 命令行选项列表:选项说明-e(-echo)回显dropuser生成的命令并且把它发送到服务器。-i(-interactive)在做任何破坏性动作前提示。 -h(-host=host)指定PostgreSQL服务器的主机名。-p(-port=port)指定服务器的监听端口,如不指定,则为缺省的5432。-U(-username=username)本次操作的登录用户名。-w(-no-pas

22、sword)如果当前登录用户没有密码,可以指定该选项直接登录。 2. 应用示例: # 直接删除指定用户。 / dropuser -e myuser3 DROP ROLE myuser3; # 在删除指定用户时,该命令会给出提示信息,以免误操作。 / dropuser -e -i myuser2 Role myuser2 will be permanently removed. Are you sure? (y/n) y DROP ROLE myuser2;七、pg_dump: pg_dump是一个用于备份PostgreSQL数据库的工具。它甚至可以在数据库正在并发使用时进行完整一致的备份,而不

23、会阻塞其它用户对数据库的访 问。该工具生成的转储格式可以分为两种,脚本和归档文件。其中脚本格式是包含许多SQL命令的纯文本格式,这些SQL命令可以用于重建该数据库并将之恢复 到生成此脚本时的状态,该操作需要使用psql来完成。至于归档格式,如果需要重建数据库就必须和pg_restore工具一起使用。在重建过程中,可以 对恢复的对象进行选择,甚至可以在恢复之前对需要恢复的条目进行重新排序。该命令的使用方式如下: pg_dump option. dbname 1. 命令行选项列表:选项说明-a(-data-only)只输出数据,不输出模式(数据对象的定义)。这个选项只是对纯文本格式有意义。对于归档

24、格式,你可以在调用 pg_restore时指定选项。 -b(-blobs)在dump中包含大对象。-c(-clean)在输出创建数据库对象的SQL命令之前,先输出删除该数据库对象的SQL命令。这个选项只是对纯文本格式有意义。对于归档格式,你可以在调用 pg_restore时指定选项。 -C(-create)先输出创建数据库的命令,之后再重新连接新创建的数据库。对于此种格式的脚本,在运行之前是和哪个数据库进行连接就不这么重要了。这个选项只是对纯文本格式有意义。对于归档格式,你可以在调用pg_restore时指定选项。-E encoding以指定的字符集创建该dump文件。-f file输出到指定

25、文件,如果没有该选项,则输出到标准输出。-F formatp(plain): 纯文本格式的SQL脚本文件(缺省)。c(custom): 输出适合于pg_restore的自定义归档格式。 这是最灵活的格式,它允许对装载的数据和对象定义进行重新排列。这个格式缺省的时候是压缩的。t(tar):输出适合于 pg_restore的tar归档文件。使用这个归档允许在恢复数据库时重新排序和/或把数据库对象排除在外。同i时也可能可以在恢复的时候限制对哪些数据进行恢复。-n schema只转储schema的内容。如果没有声明该选项,目标数据库中的所有非系统模式都会被转储。该选项也可以被多次指定,以指定不同pat

26、tern的模式。-N schema不转储匹配schema的内容,其他规则和-n一致。-o(-oids)作为数据的一部分,为每个表都输出对象标识(OID)。-O(-no-owner)不输出设置对象所有权的SQL命令。-s(-schema-only)只输出对象定义(模式),不输出数据。 -S username指定关闭触发器时需要用到的超级用户名。它只有在使用-disable-triggers的时候才有关系。-t table只输出表的数据。很可能在不同模式里面有多个同名表,如果这样,那么所有匹配的表都将被转储。通过多次指定该参数,可以一次转储多张表。这里还可以指定和psql一样的pattern,以便

27、匹配更多的表。(关 于pattern,基本的使用方式是可以将它视为unix的通配符,即*表示任意字符,?表示任意单个字符,.(dot)表示schema和object 之间的分隔符,如a*.b*,表示以a开头的schema和以b开头的数据库对象。如果没有.(dot),将只是表示数据库对象。这里也可以使用基本的正 则表达式,如0-9表示数字。)-T table排除指定的表,其他规则和-t选项一致。-x(-no-privileges)不导出访问权限信息(grant/revoke命令)。-Z 0.9声明在那些支持压缩的格式中使用的压缩级别。 (目前只有自定义格式支持压缩)-column-inserts

28、导出数据用insert into table_name(columns_list) values(values_list)命令表示,这样的操作相对其它操作而言是比较慢的,但是在特殊情况下,如数据表字段的位置有可能发生变化或有新的 字段插入到原有字段列表的中间等。由于columns_list被明确指定,因此在导入时不会出现数据被导入到错误字段的问题。-inserts导出的数据用insert命令表示,而不是copy命令。即便使用insert要比copy慢一些,但是对于今后导入到其他非PostgreSQL的数据库是比较有意义的。-no-tablespaces不输出设置表空间的命令,如果带有这个选项,所有的对象都将恢复到执行pg_restore时的缺省表空间中。-no-unlogged-table-data对于不计入日志(unlogged)的数据表,不会导出它的数据,至于是否导出其Schema信息,需要依赖其他的选项而定。-h(-host=host)指定PostgreSQL服务器的主机名。-p(-port=por

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1