时序数据库之PostgreSql
前⾔
mysql可能⼤家都⽤的⽐较多且普遍,最近1年在使⽤PostgreSql,其⼤体DML语句与mysql类似,只是部分DDL语句有些区别,写⼀篇⽂章给正在应⽤该数据库或者准备选型该数据库的朋友,分享下使⽤⽅式与⼼得
PostgreSql
PostgreSQL是⼀种特性⾮常齐全的⾃由软件的对象-关系型数据库管理系统(),是以计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在⽐较迟的时候才出现在商业⽹站数据库中。PostgreSQL⽀持⼤部分的标准并且提供了很多其他现代特性,如复杂查询、、、、事务完整性、多版本并发控制等。同样,PostgreSQL也可以⽤许多⽅法扩展,例如通过增加新的数据类型、函数、操作符、、索引⽅法、过程语⾔等。另外,因为许可证的灵活,任何⼈都可以以任何⽬的免费使⽤、修改和分发PostgreSQL。 —— 引⾃搜索引擎百科
软件下载
可视化Client(推荐使⽤postico,⽐较好⽤):
语法
整体使⽤感觉是有mysql经验的朋友直接上⼿就可以,只不过有些特殊的语句我罗列下(常⽤)
1. 使⽤终端命令⾏客户端链接数据库
psql -h 数据库服务器ip -d 库名 -U ⽤户名
2.DDL部分指令
\c testdatabase 创建库
\dn 列出所有
\l 库列表
\dnS 列出所有模式 S代表各个schema
\d tablename 列出表详情 类似于mysql的show create table
3.时序分⽚
-
- 建表语句
CREATE TABLE info(
type varchar(15) NOT NULL,
info varchar(20) NOT NULL,
amount decimal(36, 18) NOT NULL,
ts timestamp without time zone NOT NULL,
CONSTRAINT info_ukey UNIQUE (type, info, ts)
) WITH (OIDS = FALSE) TABLESPACE default;
-- 时序+分⽚
SELECT create_hypertable('info', 'ts', chunk_time_interval => interval '1 weeks');
SELECT add_dimension('info', 'type', number_partitions => 5);
使⽤ create_hypertable 函数将 postgres 标准表转化为 hypertable
create_hypertable 有三个参数【表名、分区列(⼀般为 TIMESTAMPTZ 类型)、时间间隔】
add_dimension函数在info表的type字段上添加5个分区的维度
两个语句共同作⽤的感觉可以抽象⼀下,像是切⾖腐,横着按照1厘⽶切了N⼑后,再竖着切了5⼑
4.导出/⼊表
(1)以csv⽂件导出info表
\COPY (select * from info) TO /root/info.csv DELIMITER ',' CSV HEADER
(2)从csv⽂件导⼊info表
\COPY public.info FROM /root/info.csv DELIMITER ',' CSV HEADER
备份还有⼀种⽅式,需要⽤到pg_dump
(1)导出testdatabase库下的public schema下的所有表的结构到/tmp/testdb_public.sql⽂件
(只导出结构,添加--s,代表schema)
pg_dump "xx xx port=5432 user=postgres password=xxxxx dbname=testdatabase"
--table=public.* --s > /tmp/testdb_public.sql;
(2)区别于(1),导出insert语句
pg_dump "xx xx port=5432 user=postgres password=xxxxx dbname=testdatabase"
--table=public.info --column-inserts > /tmp/testdb_public_info.sql;
免费下载mysql其他pg_dump相关的指令就不做列举了,需要的朋友可以搜⼀下,功能还是很强⼤的,但是需要注意的点是,针对不同的pg版本,可能导出内容不尽相同
结语
作为⼀款开源免费的数据库,在时序处理上表现是⽐较出⾊的,如果有针对于时间维度的⽐较重的表
需要做⼀些优化,可以考虑引⼊时序数据库的选型,⽽且⼤体DML语句与mysql类似,只是部分DDL语句有些区别,希望⽂章对您有所帮助
原创,请勿转载,欢迎转发,分享知识,快乐⼯作
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论