PostgreSQL常用操作

1. 创建分区表

1)创建主表

CREATE TABLE z_test (
    uuid bpchar(36) NOT NULL,
    cr_date date NOT NULL DEFAULT CURRENT_DATE,
    cr_time timestamptz NOT NULL DEFAULT now(),
    name varchar(6) NOT NULL,
    update_time timestamptz NOT NULL DEFAULT now(),
    CONSTRAINT z_test_sap_sd_so_staging_pk PRIMARY KEY (cr_date, uuid)
)
PARTITION BY RANGE (cr_date);

2.1)创建分区表

CREATE table if not exists  z_test_202107
PARTITION OF z_test
FOR VALUES FROM ('2021-07-01') TO ('2021-08-01');

CREATE table if not exists  z_test_202108
PARTITION OF z_test
FOR VALUES FROM ('2021-08-01') TO ('2021-09-01');

-- 或者
CREATE table if not exists  z_test_202107
PARTITION OF z_test
FOR VALUES FROM ('2020-06-01') TO ('2020-07-01');

2.2)创建default分区

create table z_test_def
partition of z_test default

3)新增测试数据

INSERT INTO stagingavatar.z_test_sap_sd_so_staging
(uuid, cr_date, cr_time, name, update_time)
VALUES('1', CURRENT_DATE, now(), 'a', now());

INSERT INTO stagingavatar.z_test_sap_sd_so_staging
(uuid, cr_date, cr_time, name, update_time)
VALUES('1', CURRENT_DATE + integer '30', now(), 'a', now());

4) 查询分区表信息

SELECT
    nmsp_parent.nspname AS parent_schema ,
    parent.relname AS parent ,
    nmsp_child.nspname AS child ,
    child.relname AS child_schema
FROM
    pg_inherits JOIN pg_class parent
        ON pg_inherits.inhparent = parent.oid JOIN pg_class child
        ON pg_inherits.inhrelid = child.oid JOIN pg_namespace nmsp_parent
        ON nmsp_parent.oid = parent.relnamespace JOIN pg_namespace nmsp_child
        ON nmsp_child.oid = child.relnamespace
WHERE
    parent.relname = 'z_test';

5)查询分区表数据分布情况

SELECT p.relname,c.tableoid,c.*
FROM z_test c, pg_class p
WHERE c.tableoid = p.oid

6)删除分区表
 

DROP TABLE z_test_202107;

7)根据主表信息查分区表表名

select
    c.relname
from
    pg_class c
    join pg_inherits i on i.inhrelid = c. oid
    join pg_class d on d.oid = i.inhparent
where
    d.relname = 'z_test ';

8)新增分区表列

不影响rule的前提下直接alter

如:

ALTER TABLE z_test ADD test_column1 varchar(20) NULL;

9.1)新增约束

ALTER TABLE z_test ADD CONSTRAINT z_test_pkey PRIMARY KEY(id);

9.2)修改约束

ALTER INDEX z_test RENAME TO whatever_new_name

2.列出所有表名和数据库名

1)列出表名

SELECT   tablename   FROM   pg_tables  
WHERE   tablename   NOT   LIKE   'pg%'  
AND tablename NOT LIKE 'sql_%'
ORDER   BY   tablename;

2)列出数据库名
\l

SELECT datname FROM pg_database;

切换数据库
\c 数据库名

查看表结构:

\d table

---

\l 

\d table

\?

3.PostgreSQL查询表名称、表结构、主键(多个)(借鉴)

https://www.cnblogs.com/xy-ouyang/p/13303359.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值