当前位置: 首页 > news >正文

【数据库表及字段统计SQL】【mysql】【clickhouse】【oracle】

最近在一些元数据整理时,需要对数据库进行澄清,奈何数据库没有专门的运维工程师,得自行取相关信息,故最终整理了相关统计语句。


Clickhouse 元数据明细


SELECTt1.database  AS `库名`,t1.name      AS `表名`,replaceRegexpAll(toString(t1.comment),'\n|\\|','') AS `表注释`,t2.name AS `字段名`,replaceRegexpAll(toString(t2.comment),'\n|\\|','') AS `字段注释`,t2.position  AS `字段序号`
FROM  system.tables t1
LEFT JOIN
system.columns t2
ON t1.database = t2.database AND t1.name = t2.table
WHERE  t1.database IN ('test')
ORDER BY `库名`,`表名`,`字段序号`

replaceRegexpAll和toString由于是clickhouse数据库,严格区分大小写。


Oracle 元数据明细


SELECTtab.owner                                                              库名,tab.table_name                                                        表名,REGEXP_REPLACE(REGEXP_REPLACE(tab.comments,chr(10),';'),'\|',';')   表注释,col.column_name                                                        字段名,REGEXP_REPLACE(REGEXP_REPLACE(colc.comments,chr(10),';'),'\|',';')  字段注释,col.column_id                                                         字段序号
FROM all_tab_comments tab
LEFT JOIN all_tab_columns col
ON tab.owner=col.owner AND tab.table_name=col.table_name
LEFT JOIN all_col_comments colc
ON tab.owner=colc.owner AND tab.table_name=colc.table_name AND col.column_name =colc.column_name
WHERE tab.owner IN ('test')
ORDER BY tab.owner,tab.table_name,tab.comments,col.column_id

MYSQL 元数据明细


SELECTtab.table_schema                                                  库名,tab.table_name                                                    表名,CONVERT(REGEXP_REPLACE(tab.table_comment,'\n|\\|',';')USING utf8) 表注释,col.column_name                                                   字段名,CONVERT(REGEXP_REPLACE(col.column_comment,'\n|\\|',';')USING utf8) 字段注释,col.ordinal_position                                              字段序号
FROM information_schema.tables tab
LEFT JOIN information_schema.columns  col
ON tab.table_schema = col.table_schema AND tab.table_name = col.table_name
WHERE 1=1
ORDER BY tab.table_schema,tab.table_name,col.ordinal_position

其中REGEXP_REPLACE正则替换函数mysql5.7及以下需要自定义,5.8及以后数据库自带

#创建前删除已经创建的自定义函数
DROP FUNCTION IF EXISTS test.regexp_replace;
#创建 regexp_replace函数
DELIMITER $$
$$
CREATE FUNCTION  test.`regexp_replace`(string_a VARCHAR(20000),pattern VARCHAR(20000),string_b VARCHAR(20000))  RETURNS VARCHAR(20000)  DETERMINISTIC
BEGINDECLARE string_c VARCHAR(20000);DECLARE nub VARCHAR(1);DECLARE i INT;SET i =1;SET string_c ='';IF string_a REGEXP patternTHEN  loop_label :LOOPIF i > CHAR_LENGTH(string_a)THEN  LEAVE loop_label;END IF;SET nub = SUBSTRING(string_a,i,1);IF NOT nub REGEXP patternTHEN  SET string_c = CONCAT(string_c,nub);ELSE  SET string_c = CONCAT(string_c,string_b);END IF;SET i=i+1;END LOOP;ELSE SET string_c = string_a;END IF;RETURN string_c;
END$$
DELIMITER;
http://www.lryc.cn/news/236395.html

相关文章:

  • 如何分析伦敦金的价格走势预测?
  • 【设计原则篇】聊聊接口隔离原则
  • 自压缩llm 为 超长记忆之随机编码(非进制编码)
  • 苹果怎么互传照片?简单方法总结好了!
  • 【ARM Trace32(劳特巴赫) 使用介绍 2.1 -- TRACE32 Practice 脚本 cmm 脚本学习】
  • 学习指南:如何快速上手媒体生态一致体验开发
  • 037、目标检测-算法速览
  • 【开发流程】持续集成、持续交付、持续部署
  • Linux——编译器gcc/g++、调试器gdb以及自动化构建工具makefilemake详解
  • Android registerForActivityResults使用详解以及实现原理
  • 模拟实现一个Linux中的简单版shell
  • 扩散模型实战(十):Stable Diffusion文本条件生成图像大模型
  • LaTex编写伪代码,并实现根据所在章编号(连字符),例如算法1-1
  • vue.js javascript js判断是值否为空
  • 网页开发如何实现简易页面跳动/跳转,html课堂练习/作业,页面ABC的相互跳转
  • 某大型房地产公司绩效面谈项目成功案例纪实
  • BGP联盟和团体属性实验
  • 代码随想录-刷题第二天
  • DAY59 503.下一个更大元素II + 42. 接雨水
  • 【如何将任何直流电机变成伺服电机】
  • 单片机语音芯片在工业控制中的应用优势
  • 【开源】基于Vue.js的高校实验室管理系统的设计和实现
  • Xrdp+内网穿透实现远程访问Linux Kali桌面
  • 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】
  • Eclipse切换中文环境
  • 栈和队列概念
  • a标签下载文件与解决浏览器默认打开某些格式文件的问题
  • EasyCVR视频监控+AI智能分析网关如何助力木材厂安全生产?
  • 重命名com1.{d3e34b21-9d75-101a-8c3d-00aa001a1652}文件夹
  • springboot+activiti5.22.0集成Activiti在线流程设计器