greenplum基础查询

– 查询表结构

select table_schema||'.'||table_name as table_name,column_name,
	case when data_type='integer' then data_type 
		when data_type='numeric' then data_type||'(18,2)'
		when data_type='date' then data_type
		when data_type='timestamp without time zone' then 'timestamp'
		when data_type='character varying' then 'varchar'||'('||coalesce(character_maximum_length,'0')||')'
		else data_type||'('||coalesce(character_maximum_length,'0')||')' end as column_type
    from information_schema.columns
    where table_schema||'.'||table_name='schemaname.tablename';

– 查询视图信息(schemaname, viewname, viewowner, definition)

definition:查询哪些视图使用了某字段或某表名

select * from pg_views 
	where schemaname||'.'||viewname = ''
	and viewowner = '' and definition like '%%';

– 查询表或视图权限(拼接赋权语句),表的owner

select 'alter table '||a.schemaname||'.'||a.tablename||' owner to '||a.tableowner||';'
        from (
                select tableowner, schemaname, tablename
                        from pg_tables
                union all
                select viewowner, schemaname, viewname
                        from pg_views
        ) a
        where schemaname||'.'||tablename = ''
union all
select 'grant '||p_type||' on table '||b.schemaname||'.'||b.tablename||' to ' ||b.grantee||';'
        from (
                select t.tableowner, t.schemaname, t.tablename, r.grantee, lower(string_agg(privilege_type,',')),
                -- insert,delete,update,select,truncate,references,trigger
                case when count(privilege_type) >= 7 then 'all' else lower(string_agg(privilege_type,',')) end p_type
                        from (
                                select tableowner, schemaname, tablename
                                        from pg_tables
                                union all
                                select viewowner, schemaname, viewname
                                        from pg_views
                        ) t
                        join information_schema.role_table_grants r 
                                on t.tablename = r.table_name and t.schemaname = r.table_schema
                        where t.schemaname||'.'||t.tablename = ''
                        group by t.tableowner, t.schemaname, t.tablename,r.grantor,r.grantee
                        order by p_type
        ) b;
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值