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

 更新时间:2021年12月26日 12:55:48   作者:这行代码没Bug  
MySQL和Oracle虽然在架构上有很大的不同,但是如果从某些方面比较起来,它们有些方面也是相通的,下面这篇文章主要给大家介绍了关于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的元数据都在information_schema库中以视图的形式存在,只能看,不能修改。

进入文档后直接看information_schema的介绍,里面详细介绍了每一个表和字段。

常用的查询mysql元数据sql

-- 数据库
SELECT `schema_name` 库名,`DEFAULT_CHARACTER_SET_NAME` 默认字符集 FROM `SCHEMATA`
 
-- 表
SELECT `TABLE_NAME` 表名,`TABLE_COMMENT` 描述,`TABLE_TYPE` 表类型  FROM`TABLES`
 
-- 字段
SELECT `TABLE_SCHEMA` 库名,`TABLE_NAME` 表名,`COLUMN_NAME` 字段名,`COLUMN_COMMENT` 字段描述,`DATA_TYPE` 字段类型,`CHARACTER_MAXIMUM_LENGTH` 长度,`IS_NULLABLE` 是否为空 
FROM `COLUMNS`
 
-- 分区
SELECT `TABLE_SCHEMA` 库名,`TABLE_NAME` 表名,`PARTITION_NAME` 分区名,`PARTITION_ORDINAL_POSITION` 分区编号,`PARTITION_EXPRESSION` 分区函数表达式 
FROM `PARTITIONS` WHERE partition_name IS NOT NULL 
 
-- 视图
SELECT * FROM `VIEWS`
 
-- 索引
SELECT * FROM STATISTICS
 
-- 主键
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:

-- 模式
SELECT * FROM DBA_TABLESPACES;
 
-- 表
select * 
from user_tables ut LEFT JOIN user_tab_comments utc ON ut.TABLE_NAME = utc.TABLE_NAME;
 
-- 字段
select t.TABLE_NAME 表名,t.COLUMN_NAME 描述,t.DATA_TYPE 类型,t.DATA_LENGTH 长度,t.NULLABLE 是否为空,t.DATA_DEFAULT 默认值,s.comments 描述
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';
 
-- 分区
SELECT * FROM USER_PART_KEY_COLUMNS;
 
-- 索引
SELECT * FROM USER_INDEXES;
 
-- 视图
SELECT * FROM USER_VIEWS;
 
-- 主键
select cu.* from USER_CONS_COLUMNS cu, USER_CONSTRAINTS au 
where cu.constraint_name = au.constraint_name and au.constraint_type = 'P';

总结

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

相关文章

  • mysql定时任务(event事件)实现详解

    mysql定时任务(event事件)实现详解

    这篇文章主要介绍了mysql定时任务(event事件)实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Mysql数据库之索引优化

    Mysql数据库之索引优化

    MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。本文给大家介绍mysql数据库之索引优化,感兴趣的朋友一起学习吧
    2016-03-03
  • Mysql 常用的时间日期及转换函数小结

    Mysql 常用的时间日期及转换函数小结

    本文是脚本之家小编给大家总结的一些常用的mysql时间日期以及转换函数,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-05-05
  • mysql-5.7.28 在Linux下的安装教程图解

    mysql-5.7.28 在Linux下的安装教程图解

    这篇文章主要介绍了mysql-5.7.28 的Linux安装,本文通过图文并茂的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • 当mysqlbinlog版本与mysql不一致时可能导致出哪些问题

    当mysqlbinlog版本与mysql不一致时可能导致出哪些问题

    这篇文章主要介绍了当mysql服务器为mysql5.6时,mysqlbinlog版本不对可能导致出哪些问题,下面通过模拟2种场景分析此类问题,需要的朋友可以参考下
    2015-07-07
  • MySQL如何实现两张表取差集

    MySQL如何实现两张表取差集

    这篇文章主要介绍了MySQL如何实现两张表取差集问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • MySQL详解如何优化查询条件

    MySQL详解如何优化查询条件

    我们知道从MySQL表中使用SELECT语句来查询数据,如需有条件地从表中选取数据,可将WHERE子句添加到SELECT语句中,本篇我们来看看怎样优化查询条件
    2022-05-05
  • mysql 8.0.25 解压版安装配置方法图文教程

    mysql 8.0.25 解压版安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql 8.0.25 解压版安装配置方法图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • 详解mysql查询缓存简单使用

    详解mysql查询缓存简单使用

    这篇文章主要介绍了详解mysql查询缓存简单使用的相关资料,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-03-03
  • MySQL pt-slave-restart工具的使用简介

    MySQL pt-slave-restart工具的使用简介

    这篇文章主要介绍了MySQL pt-slave-restart工具的使用简介,帮助大家更好的理解和学习使用MySQL,感兴趣的朋友可以了解下
    2021-04-04

最新评论