• 售前

  • 售后

热门帖子
入门百科

MySQL和Oracle的元数据抽取实例分析

[复制链接]
刺客325 显示全部楼层 发表于 2022-1-9 06:36:15 |阅读模式 打印 上一主题 下一主题
目录


  • 前言
  • 什么是元数据
  • 参考文档地址
  • 先说MySQL
  • 再说Oracle
  • 总结

前言

迩来接到个任务是抽取mysql和Oracle的元数据,大抵就是在库里把库、schema、表、字段、分区、索引、主键等信息抽取出来,然后导成excel。
因为刚开始接触元数据,对这个并不相识,就想借助一下万能的百度,效果百度了一圈全是告诉我sql,直接cv就行了。虽然得到了部分数据,但是查的哪个库,哪个表我是完全不清晰的,得到的数据也不是我想要的,只有自己去官网看文档来完成自己的任务。
授人以鱼不如授人以渔,把经验写出来,给跟我一样疑惑的小伙伴一个参考。

什么是元数据

百度百科:元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),紧张是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据算是一种电子式目录,为了到达编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成帮助数据检索的目的。都柏林焦点集(Dublin Core Metadata Initiative,DCMI)是元数据的一种应用,是1995年2月由国际图书馆电脑中央(OCLC)和美国国家超等计算应用中央(National Center for Supercomputing Applications,NCSA)所连合赞助的研讨会,在约请52位来自图书馆员、电脑专家,共同制定规格,创建一套描述网络上电子文件之特性。
元数据是关于数据的构造、数据域及其关系的信息,简言之,元数据就是关于数据的数据。

参考文档地址

mysql:https://docs.oracle.com/cd/E17952_01/index.html
Oracle:https://docs.oracle.com/en/database/oracle/oracle-database/index.html

先说MySQL

mysql的元数据都在
  1. information_schema
复制代码
库中以视图的形式存在,只能看,不能修改。
进入文档后直接看
  1. information_schema
复制代码
的先容,里面具体先容了每一个表和字段。
常用的查询mysql元数据sql
  1. -- 数据库
  2. SELECT `schema_name` 库名,`DEFAULT_CHARACTER_SET_NAME` 默认字符集 FROM `SCHEMATA`
  3. -- 表
  4. SELECT `TABLE_NAME` 表名,`TABLE_COMMENT` 描述,`TABLE_TYPE` 表类型  FROM`TABLES`
  5. -- 字段
  6. SELECT `TABLE_SCHEMA` 库名,`TABLE_NAME` 表名,`COLUMN_NAME` 字段名,`COLUMN_COMMENT` 字段描述,`DATA_TYPE` 字段类型,`CHARACTER_MAXIMUM_LENGTH` 长度,`IS_NULLABLE` 是否为空
  7. FROM `COLUMNS`
  8. -- 分区
  9. SELECT `TABLE_SCHEMA` 库名,`TABLE_NAME` 表名,`PARTITION_NAME` 分区名,`PARTITION_ORDINAL_POSITION` 分区编号,`PARTITION_EXPRESSION` 分区函数表达式
  10. FROM `PARTITIONS` WHERE partition_name IS NOT NULL
  11. -- 视图
  12. SELECT * FROM `VIEWS`
  13. -- 索引
  14. SELECT * FROM STATISTICS
  15. -- 主键
  16. SELECT * FROM `COLUMNS` WHERE COLUMN_KEY = 'PRI'
复制代码
再说Oracle

Oracle里的元数据在静态数据字典视图。
我们是不能直接访问数据字典表的,但可以通过数据字典视图访问此中的信息。要列出可用的数据字典视图,查询视图DICTIONARY就可以。
在静态数据字典视图里有三大类开头的视图:ALL_、DBA_、USER_
       
  • ALL_视图显示全部的信息,当前用户,包罗从其他架构中对象的当前用户的模式以及信息访问,如果当前用户拥有的权限或角色授权的方式访问这些对象。   
  • DBA_视图显示整个数据库中的全部相关信息。DBA_视图仅供管理员利用。只有拥有SELECT ANY DICTIONARY权限的用户才气访问它们。此权限DBA在系统最初安装时分配给角色。   
  • USER_视图显示从当前用户的模式中的全部的信息。查询这些视图不需要特别权限。
ALL_,DBA_以及USER_对应于单个数据字典表视图通常是险些相同的。
官网:

然后就可以通过文档分析找到对应的视图。
查询常用的Oracle元数据sql:
  1. -- 模式
  2. SELECT * FROM DBA_TABLESPACES;
  3. -- 表
  4. select *
  5. from user_tables ut LEFT JOIN user_tab_comments utc ON ut.TABLE_NAME = utc.TABLE_NAME;
  6. -- 字段
  7. select t.TABLE_NAME 表名,t.COLUMN_NAME 描述,t.DATA_TYPE 类型,t.DATA_LENGTH 长度,t.NULLABLE 是否为空,t.DATA_DEFAULT 默认值,s.comments 描述
  8. from user_tab_columns t LEFT JOIN user_col_comments s ON t.COLUMN_NAME = s.COLUMN_NAME WHERE t.TABLE_NAME ='ASSET_BASE_TABLE';
  9. -- 分区
  10. SELECT * FROM USER_PART_KEY_COLUMNS;
  11. -- 索引
  12. SELECT * FROM USER_INDEXES;
  13. -- 视图
  14. SELECT * FROM USER_VIEWS;
  15. -- 主键
  16. select cu.* from USER_CONS_COLUMNS cu, USER_CONSTRAINTS au
  17. where cu.constraint_name = au.constraint_name and au.constraint_type = 'P';
复制代码
总结

到此这篇关于MySQL和Oracle元数据抽取的文章就先容到这了,更多相关MySQL Oracle元数据抽取内容请搜索脚本之家从前的文章或继承浏览下面的相关文章盼望各人以后多多支持脚本之家!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作