安装使用

mac可以通过命令行用brew来安装或者直接下载安装包来安装,网上资料很多,这里就不介绍了。

如果通过brew来安装的,可以通过brew services start/stop postgres来开启或停止。

还有一种方法是通过docker来跑,这里以mac桌面版为例,创建启动脚本pg-docker-compose.yml:

# Use postgres/example user/password credentials
version: '3.1'services:pgsql:image: postgres:12restart: alwaysprivileged: trueports:- '5432:5432'environment:POSTGRES_USER: 'postgres'POSTGRES_DB: 'postgres'POSTGRES_PASSWORD: 'postgres'PGDATA: /var/lib/postgresql/data/pgdatavolumes:- /Users/xxx/docker/postgres/data:/var/lib/postgresql/data/pgdata

通过 docker-compose -f pg-docker-compose.yml up -d启动docker。打开就能看到容器已经启动了,如下所示:

接下来可以通过pgAdmin来进行数据库访问和操作。具体安装过程这里不介绍。

安装完成之后,创建数据库连接,以上面的docker启动的数据库为例,连接参数如下:

postgres与mysql有点不一样,mysql的table是database的下级元素,而postgres的database下面还有schemas,其中public是默认的schema,schema下面才是table。

在需要操作的表格上右键,选择不同的script,可以进行数据操作。其中,PSQL Tool是客户端命令行(如果安装了postgres服务端而没有安装pgAdmin,可以直接通过psql来开启命令行)。

上面的SQL栏可以查看table的建表语句。

postgres常用命令:

操作 含义
\l 列出所有databases
\c 当前用户和连接的表
\c databaseName 切换数据库
\c - username 切换用户
\dn 查看数据库中所有schemas
\du 查看数据库中所有role及其权限
\dt 查看数据库中所有表
\d tableName 查看某个表的描述
\d+ tableName 查看某个表的基本信息
\di 查看索引
\df 查看存储过程
\encoding 查看编码

角色权限

点开Login/FGroup ROles可以查看role和其属性,包括每个role的权限,如下所示:


可以看出,postgres是一个super用户,拥有所有权限。
查看当前登录用户并创建一个新用户:

可以看到新用户test只有login权限。

注意关键字role和user的区别,如create user会自动赋予用户登录权限,而create role不会。

切换到test用户(注意必须与登录用户的密码相同才能切换,否则要修改db连接密码重新登录),然后创建新用户:
此时会发现无法创建新的role,因为当前登录用户test不具有创建role的权限。

重新切换回super用户,修改test用户的权限:

然后切换到test用户就可以创建新角色了:
切换到新用户test1,尝试删除本身:

因为test1只有login权限,所以不能删除role。可以切换到具有createrole权限的test用户来删除:

如果当前用户拥有删除role权限但报错:

cannot be dropped because some objects depend on it

说明这个不能删除的role拥有其他对象。但是drop role并没有cascade删除指令,只能先删除其拥有的其他对象,再删除role:

drop owned by xx cascade;
drop user xxx

注意:执行此操作需保证要删除的role所拥有的其他objects确实是可以删除的。

test用户虽然具有创建role和db的权限,但是不能创建public模式。将postgres的权限赋予test,然后查看用户权限信息:

此时可以看到:test是postgres的一个成员,因此具有创建public模式的权限:

如果执行某项操作报错:

ERROR: must be member of role "xx"

则同样地,将xx权限赋予给当前用户:

grant xx to current_user

这样当前用户就成为xx的成员,可以将当前用户所拥有的一些table或者schema转让给xx。

数据迁移和校验

查询所有表的记录数

select schemaname, relname, n_live_tup from pg_stat_user_tables order by n_live_tup desc;

可以使用以下命令进行数据dump:

pg_dump -Fc -v -b -h localhost -p 5432 -U postgres -E UTF8 -d postgres > test.dump

生成原始数据的校验文件:

psql -hlocalhost -Upostgres -p5432 -d postgres -f test.sql > validation_test.txt

校验脚本如下:

create function validation() returns textlanguage plpgsql as $$
DECLARErec   record;countTable bigint;sumRowHashTable bigint;sch   record;seqName record;seq record;results text;
BEGINresults = '';-- table hashFOR sch INSELECT *FROM information_schema.schemataWHERE schema_name <> 'pg_catalog' and schema_name <> 'information_schema'ORDER BY schema_nameLOOPFOR rec INSELECT *FROM pg_tablesWHERE schemaname = sch.schema_nameORDER BY tablenameLOOPEXECUTE 'SELECT count(*) FROM '|| quote_ident(rec.schemaname) || '.'|| quote_ident(rec.tablename)INTO countTable;-- adjust for precision of datatype for diffrent postgres version, this is for exampleIF rec.tablename = 'order' THENEXECUTE 'SELECT sum(CAST(CAST((''x'' || md5(CAST((f.id, round(f.amount::numeric, 6), f.createTime) AS text))) AS bit(32)) AS int)) FROM '|| quote_ident(rec.schemaname) || '.'|| quote_ident(rec.tablename) || ' f'INTO sumRowHashTable;ELSEEXECUTE 'SELECT sum(CAST(CAST((''x'' || md5(CAST((f.*)AS text))) AS bit(32)) AS int)) FROM '|| quote_ident(rec.schemaname) || '.'|| quote_ident(rec.tablename) || ' f'INTO sumRowHashTable;END IF;IF results = '' THENresults = rec.schemaname || '.' || rec.tablename || ',' || countTable || ',' || sumRowHashTable;ELSEresults = concat(results, CHR(10), rec.schemaname || '.' || rec.tablename || ',' || countTable || ',' || sumRowHashTable);END IF;END LOOP;END LOOP ;-- sequenceresults = concat(results, CHR(10), CHR(10), CHR(10), CHR(10), CHR(10), '-------------------------------------');FOR seqName INSELECT c.relnameFROM pg_class cWHERE c.relkind = 'S'ORDER BY c.relnameLOOP-- change 'public' to your own database schemaEXECUTE  'SELECT * FROM ' || 'public' || '.' || quote_ident(seqName.relname)INTO seq;results = concat(results, CHR(10), seqName.relname || ',' || seq.last_value || ',' || seq.log_cnt || ',' || seq.is_called);END LOOP ;RETURN results;
END;
$$;select validation();DROP FUNCTION validation();

接下来通过以下命令进行数据恢复:

pg_restore -Fc -v -h localhost -p 5432 -U postgres -d postgres test.dump

恢复之后,同样用相同的脚本生成校验文件,比较校验文件是否相同。

postgres操作指南相关推荐

  1. 叛乱联机服务器未响应,叛乱沙漠风暴怎么开服 叛乱沙漠风暴开服操作指南详解 安装准备-游侠网...

    叛乱沙漠风暴怎么开服?游戏一款多人联机操作游戏,在开服前期要做好相应的准备工作,也就是设置一些选项,这里给大家带来了"xudong162"分享的叛乱沙漠风暴开服操作指南详解,详情一 ...

  2. postgres默认安装后有哪些表_Greenplum 行存、列存,堆表、AO表的原理和选择

    行存和列存的原理 什么时候选择行存 什么时候选择列存 堆表和AO表的原理 什么时候选择堆表 什么时候选择AO表 测试对比行存deform和列存的性能差别 如何查看表的存储结构 Greenplum支持行 ...

  3. oracle读书笔记之Oracle 11g R2 DBA操作指南(前三章)

    Oracle 11g R2 DBA操作指南是我学习的第一本讲述oracle数据库知识的书籍,在此记录下自己的学习笔记,对于书中的知识点本人通过实际操作进行验证. 1.Oracle数据库基础 1.1.关 ...

  4. postgres语法_SQL Create Table解释了MySQL和Postgres的语法示例

    postgres语法 A table is a group of data stored in a database. 表是存储在数据库中的一组数据. To create a table in a d ...

  5. linux安装配置postgres及使用dblink

    好久不写东西,一直在看些开源的东西,下面贴下linux上安装配置postgres及使用dblink的操作参考,以供读者和自己今后参考: 1.下载源码:postgresql-9.3.2.tar.gz 2 ...

  6. postgres 入门

    为什么80%的码农都做不了架构师?>>>    安装 BASH 命令行 一.psql 命令行 登录 postgres库 su - postgres # 切换用户,同时切换了 bash ...

  7. postgres 物理格式

    2019独角兽企业重金招聘Python工程师标准>>> Introduction to PostgreSQL physical storage November 9, 2015 I ...

  8. tcp转串口_PROFIBUS DP与Modbus/TCP网络转换操作指南

    >>PROFIBUS DP转Modbus/TCP网关操作指南 摘要: 本文以NT100-RE-DP网关为例,实现Modbus/TCP Client与PROFIBUS DP设备间的通讯,从而 ...

  9. GitHub使用教程详解——官网操作指南(翻译)

    GitHub使用教程详解--官网操作指南(翻译) GitHub使用指南 原文地址:GitHub官网 示例项目:Hello World 十分钟轻松教学 在学习计算机语言编程的过程中创建Hello Wor ...

最新文章

  1. VB与EXCEL的相互勾通
  2. cvc降噪和主动降噪_降噪蓝牙耳机哪款好?300内建议入手的五款主动降噪蓝牙耳机...
  3. 官司在即,品胜董事长对话苹果副总裁,打脸了谁?
  4. 常用JavaScript语法107条
  5. 1002 A+B for Polynomials (25分)_29行代码AC
  6. 华为鸿蒙发布作文,华为鸿蒙OS定档6月2日发布!MatePad Pro 2或同台亮相:首发预装...
  7. 可以用来做ppt的网页效果
  8. 使用idea导入文件夹作为项目时,在项目中的文件夹可能会被隐藏
  9. C++基础知识(二)命名空间
  10. python的命名空间_python的命名空间
  11. 佳博GP2120TU标签打印机 安装和使用教程(PC)
  12. IOS OpenGL ES 图像扩展边缘黑白模糊 GPUImageDilationFilter
  13. 解决websocket链接失败防火墙规则问题
  14. PDM的工程图纸管理解决方案
  15. win10麦克风说话没声音_电脑版微信,语音通话无声音的解决
  16. 极光小课堂 | 极光一键登录集成手册--Android
  17. DrawBoard 是一个自定义 View 实现的画板;方便对图片进行各种编辑或涂鸦相关操作
  18. exiftool消除元数据
  19. php必须是汉字的 正则,php汉字正则表达式
  20. PAT 1046 划拳 (15分)

热门文章

  1. vue-orgchart做组织架构图
  2. android用户苹果手表,CIRP:35%的美国iPhone用户拥有智能手表 是Android用户的两倍...
  3. 华云数据与应通科技签署战略合作协议 携手开启深化数字化转型新篇章
  4. 盘点 | 行业头条大事件
  5. 2021-05-05
  6. 8月英杰传!看看有没你认识的?
  7. 不憧憬明天,不留念昨天,只把握今天
  8. 【python】算法与数据结构例题分析
  9. k8s篇之Pod 干预与 PDB
  10. Hexo分类及标签显示