得益于数据分组能力的增强,在Postgres中可以进行数据透视操作了;前提是你要清楚需要返回什么样的结果。
下面以一个部门员工信息例子进行简述。
SELECT department, role, gender, count(*) FROM employees GROUP BY your_grouping_type_here;
这是一个简单的按部门信息进行数据分组的例子。如果要Postgres实现更复杂的分组操作,该如何做呢?
grouping sets: 将返回每个特定key的计数。结果是你将得到每个部门的key值而同时其它key为null;返回的是根据部门key而得出的计数。
cube: 返回值与上述一样,但是每个单独的数据联合还会进行分组。所以得到的结果除了每个部门的合计数,还会得到部门与性别,部门与职位,部门与职位与性别的分组显示。
rollup: 类似于cube,但是只会返回具体指定的分组项。例如如果使用的分组项是roll (department, role, gender),那么你将不会得到部门与性别的独立分组显示。
导入外部schemas(数据泵)
如果你已经创建好外部数据库,那么可以透过导入的方式导入到Postgres中;你可以根据需要导入相应的数据表。
例如:
IMPORT FOREIGN SCHEMA public
FROM SERVER some_other_db INTO reference_to_other_db;
pg_rewind
如果你正在管理Postgres实例及正运行HA,那么pg_rewind将是好帮手。常规的数据复制操作是先下载物理数据库,然后进行数据传输。
如果操作失败,一般操作是进行回撤并重来。但是如果以pg_rewind模式进行则方便很多。它可以节省当发生错误时需要进行的大量数据移动操作。
Upsert
Upsert是Postgres9.5的亮点之一。简单来说,当进行数据插入时出现冲突,你可以进行的操作是:
- 完全放弃
- 进行部分更新
JSONB
Postgres9.5对JSONB进行了更新。让我最兴奋的是它使得JSONB在psql中的输出更具可读性。
例如可以尝试运行如下语句,看看其输出结果如何:
SELECT jsonb_pretty(jsonb_column) FROM foo;
更多的特性描述可以参考最新的RC。
原文出自:Craigkerstiens