【有用的SQL】查Greenplum的数据字典
Greenplum
查询哪个表的分布键 ( Greenplum )
SELECT
att.nspname AS 模式名
, att.relname AS 表名
, table_comment AS 表注释
, string_agg (a.attname, '、') AS 分布键
FROM
(
SELECT c.oid
, obj_description(c.oid) AS table_comment
, n.nspname,c.relname,regexp_split_to_table (array_to_string (d.distkey, ' '),' ')::int as attnu
FROM gp_distribution_policy d
LEFT JOIN pg_class c ON c.oid = d.localoid
LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE c.oid = 'u_dws.opn_label_factory_user_group'::regclass -- '模式名.表名'::regclass
) att
LEFT JOIN pg_attribute a ON a.attrelid = att.oid
WHERE att.attnu = a.attnum
GROUP BY 1,2,3
;
或者是:
SELECT
aaa.oid,
aaa.nspname AS "模式名",
aaa.relname AS "表名",
aaa.table_comment AS "中文表名",
ccc.attname AS "分布键"
FROM
(
SELECT
aa.oid,
aa.relname,
obj_description ( aa.oid ) AS table_comment,
bb.localoid,
bb.distkey,
regexp_split_to_table( array_to_string( bb.distkey, ' ' ), ' ' ) att,
dd.nspname
FROM
pg_class aa
LEFT JOIN pg_catalog.gp_distribution_policy bb ON bb.localoid = aa.oid
LEFT JOIN pg_namespace dd ON dd.oid = aa.relnamespace --模式
LEFT JOIN pg_inherits hh ON aa.oid = hh.inhrelid --继承表
WHERE
dd.nspname = 'u_dws_dev' -- 替换成需要的模式schema
AND hh.inhrelid IS NULL
) aaa
LEFT JOIN pg_attribute ccc ON ccc.attrelid = aaa.oid
AND CAST ( ccc.attnum AS TEXT ) = aaa.att
WHERE
ccc.attnum > 0
AND aaa.relname = 'opn_label_factory_user_group' --需要查询的表名
;
查看每个表的表注释 ( Greenplum )
-- 直接执行就可以
with tmp_tab as (
select pc.oid as ooid,pn.nspname,pc.*
from pg_class pc
left outer join pg_namespace pn
on pc.relnamespace = pn.oid
where 1=1
and pc.relkind in ('r')
and pn.nspname not in ('pg_catalog','information_schema') -- select pn.oid, pn.* from pg_namespace pn where 1=1
and pn.nspname not like 'pg_toast%'
and pc.oid not in (
select inhrelid
from pg_inherits
)
and pc.relname not like '%peiyb%'
order by pc.relname
),tmp_desc as (
select pd.*
from pg_description pd
where 1=1
and pd.objsubid = 0 --objsubid 对于一个表列上的一个注释,这里是列号(objoid和classoid指表本身)。对所有其他对象类型,此列为0。
--and pd.objoid=168605
)
select t0.*
from (
select tab.relname as table_name, -- tab.relname:表名
de.description -- de.description:表注释
from tmp_tab tab
left outer join tmp_desc de
on tab.ooid = de.objoid
where 1=1 and tab.nspname = 'ods_rk' -- and tab.relname='your_table_name' -- tab.nspname:模式名
) t0
where 1=1;
通过
MYSQL为Greenplum加注释
加表注释
select
CONCAT('COMMENT ON TABLE "edc_rk"."', a.TABLE_NAME, '" IS ''', a.TABLE_COMMENT, ''';') AS `SQL`
from information_schema.TABLES a
where a.TABLE_SCHEMA = 'edc_rk' and a.TABLE_NAME not like '%copy%'
ORDER BY a.TABLE_NAME
;
加列注释
select
b.ORDINAL_POSITION AS 列序号
, CONCAT('COMMENT ON COLUMN "edc_rk"."', a.TABLE_NAME, '"."', b.COLUMN_NAME, '" IS ''', b.COLUMN_COMMENT, ''';') AS `SQL`
from information_schema.TABLES a left join information_schema.COLUMNS b
on a.TABLE_SCHEMA = 'edc_rk'-- and SUBSTR(a.TABLE_COMMENT, 1, 1) = '|'
and a.TABLE_SCHEMA = b.TABLE_SCHEMA and a.TABLE_NAME = b.TABLE_NAME
where a.TABLE_SCHEMA = 'edc_rk' and a.TABLE_NAME not like '%copy%' and a.TABLE_NAME <> 'sheet1'
ORDER BY a.TABLE_NAME, b.ORDINAL_POSITION
;
查询字段的注释等相关信息
SELECT UPPER(A.SCHEMANAME) AS SCHEMANAME,
UPPER(A.TABLENAME) AS TABLENAME,
--D.ATTRELID ,
--D.ATTRELID::regclass,
UPPER(D.ATTNAME) AS ATTNAME,
REPLACE(REPLACE(REPLACE(FORMAT_TYPE(D.ATTTYPID, D.ATTTYPMOD),
'numeric',
'NUMBER'),
'character varying',
'VARCHAR2'),
'date',
'DATE') AS DATA_TYPE,
E.DESCRIPTION
FROM PG_TABLES A
INNER JOIN PG_CLASS B
ON A.TABLENAME = B.RELNAME
LEFT JOIN PG_CATALOG.PG_DESCRIPTION E
ON B.OID = E.OBJOID
LEFT JOIN PG_CATALOG.PG_ATTRIBUTE D
ON D.ATTRELID = E.OBJOID
AND D.ATTNUM = E.OBJSUBID
WHERE SCHEMANAME = 'pmart_risk'
AND A.TABLENAME LIKE '%表名称%'
AND D.ATTNUM > 0
ORDER BY A.TABLENAME ,D.ATTNUM
;
【有用的SQL】查Greenplum的数据字典的更多相关文章
- 三个有用的SQL辅助工具
三个有用的SQL辅助工具 编写人:CC阿爸 2015-1-23 工欲善其事必先利其器,今天在这里,我想与大家一起分享三个有用的SQL辅助工具.有兴趣的同学,可以一同探讨与学习一下,否则就略过吧. 相信 ...
- sql查重去除id最小值
select order_id FROM yzj_store_order t WHERE (t.user_id,t.order_status) IN ( SELECT user_id,order_st ...
- greenplum(postgresql) 数据字典
greenplum是基于postgresql开发的分布式数据库,里面大部分的数据字典是一样的.我们在维护gp的时候对gp的数据字典比较熟悉,特此分享给大家.在这里不会详细介绍每个字典的内容,只会介绍常 ...
- 比较有用的sql语句
一.基础 .说明:创建数据库 CREATE DATABASE database-name .说明:删除数据库 drop database dbname .说明:备份sql server --- 创建 ...
- SQL查临时表没有返回数据集
问题描述:在SQL中可以查询到数据,返回不到页面上. 解决办法: set nocount on create table #list [转] 每次我们在使用查询分析器调试SQL语句的时候,通常会看到一 ...
- PowerDesigner根据SQL文件生成PDM数据字典
当PowerDesigner不能直接连接到数据库的时候,可以用到下面这个方法生成数据字典(直接连接数据库生成数据字典在上次随笔中有介绍). 具体操作步骤截图: ↓↓↓这里选择的sql文件是从数据库导出 ...
- 我试了试用 SQL查 Linux日志,好用到飞起
大家好,我是小富~ 最近发现点好玩的工具,迫不及待的想跟大家分享一下. 大家平时都怎么查Linux日志呢? 像我平时会用tail.head.cat.sed.more.less这些经典系统命令,或者aw ...
- 有用的sql语句积累
⑴. sql查询未被外键关联的数据 select * from bb b where not exists (select 1 from aa a where a.bid=b.bid)
- 利用hive源码解析sql查了哪些表哪些字段
在hiveserver2中使用了org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer对抽象语法树(AST)进行语义分析,分析的过程可以得出hive查 ...
随机推荐
- 【前端干货】别再羡慕别人的Excel啦,教你点击按钮直接打开侧边栏!
负责技术支持的葡萄又来啦. 三日不见,我们的客户又为我们发来新的问题. 这次我们需要实现的场景是在前端表格环境中,像模板按钮那样,点击之后弹出一个侧边栏,然后通过点击不同的单元格显示不同的内容. 挤接 ...
- vue 收集表单数据 (有错误的请各位大佬指点)
收集表单数据: 若: <input type="text"/>, 则v-model收集 的是value值,用户输入的就是value值. 若 ...
- [RPC学习]Dubbo+nacos实现动态更新内存RTree
1.背景 服务架构一般都是从 单体架构 -> 微服务架构 -> 分布式架构 的迭代,我上一家公司就是在业务发展到一定规模时,开始拆老的单体服务,按业务维度拆成多个微服务,服务之间用的是HT ...
- Java-GUI编程之Swing组件
目录 为组件设置边框 使用JToolBar创建工具条 JColorChooser和JFileChooser JColorChooser JFileChooser JOptionPane 基本概述 四种 ...
- 基本命令学习 -(4)链接文件:ln命令
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 前言 在Windows系统中,快捷方式是指向原始文件的一个链接文件,原文件一旦被删除或剪切到其 ...
- 不要使用Java Executors 提供的默认线程池
线程池构造方法 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUni ...
- C# WPF后台动态添加控件(经典)
概述 在Winform中从后台添加控件相对比较容易,但是在WPF中,我们知道界面是通过XAML编写的,如何把后台写好的控件动态添加到前台呢?本节举例介绍这个问题. 这里要用到UniformGrid布局 ...
- LSP原则是什么
如果这篇文章能够帮到您,请给我一个免费的赞,谢谢QWQ! LSP原则并不难,但是地方就会把它说的很啰嗦,如果你对LSP还是感到疑惑,请往下看看. 先上代码: public class Bird { p ...
- WIN32 API 获取文件版本信息
CString strVersion; CString strPath(_T("xxxxxxxx.exe")); // 读文件信息 DWORD dwVerHnd = 0; DWOR ...
- vue华视电子身份证阅读器的使用
ie还是谷歌都是可以用的 只需要直接启用华视电子身份证阅读器的服务来的,至于服务已经上传到了网上 华视阅读器服务,下载下来解压,找到对应的华视电子读卡服务.exe文件,路径是CVR-1 ...