在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
前言最近接到个任务是抽取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 先说MySQLmysql的元数据都在 进入文档后直接看 常用的查询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' 再说OracleOracle里的元数据在静态数据字典视图。 我们是不能直接访问数据字典表的,但可以通过数据字典视图访问其中的信息。要列出可用的数据字典视图,查询视图DICTIONARY就可以。 在静态数据字典视图里有三大类开头的视图:ALL_、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元数据抽取内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论