您好,登錄后才能下訂單哦!
如何進(jìn)行MySQL和Oracle的元數(shù)據(jù)抽取分析,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
最近接到個(gè)任務(wù)是抽取mysql和Oracle的元數(shù)據(jù),大致就是在庫里把庫、schema、表、字段、分區(qū)、索引、主鍵等信息抽取出來,然后導(dǎo)成excel。
因?yàn)閯傞_始接觸元數(shù)據(jù),對(duì)這個(gè)并不了解,就想借助一下萬能的百度,結(jié)果百度了一圈全是告訴我sql,直接cv就行了。雖然得到了部分?jǐn)?shù)據(jù),但是查的哪個(gè)庫,哪個(gè)表我是完全不清楚的,得到的數(shù)據(jù)也不是我想要的,只有自己去官網(wǎng)看文檔來完成自己的任務(wù)。
授人以魚不如授人以漁,把經(jīng)驗(yàn)寫出來,給跟我一樣疑惑的小伙伴一個(gè)參考。
百度百科:元數(shù)據(jù)(Metadata),又稱中介數(shù)據(jù)、中繼數(shù)據(jù),為描述數(shù)據(jù)的數(shù)據(jù)(data about data),主要是描述數(shù)據(jù)屬性(property)的信息,用來支持如指示存儲(chǔ)位置、歷史數(shù)據(jù)、資源查找、文件記錄等功能。元數(shù)據(jù)算是一種電子式目錄,為了達(dá)到編制目錄的目的,必須在描述并收藏?cái)?shù)據(jù)的內(nèi)容或特色,進(jìn)而達(dá)成協(xié)助數(shù)據(jù)檢索的目的。都柏林核心集(Dublin Core Metadata Initiative,DCMI)是元數(shù)據(jù)的一種應(yīng)用,是1995年2月由國際圖書館電腦中心(OCLC)和美國國家超級(jí)計(jì)算應(yīng)用中心(National Center for Supercomputing Applications,NCSA)所聯(lián)合贊助的研討會(huì),在邀請(qǐng)52位來自圖書館員、電腦專家,共同制定規(guī)格,創(chuàng)建一套描述網(wǎng)絡(luò)上電子文件之特征。
元數(shù)據(jù)是關(guān)于數(shù)據(jù)的組織、數(shù)據(jù)域及其關(guān)系的信息,簡言之,元數(shù)據(jù)就是關(guān)于數(shù)據(jù)的數(shù)據(jù)。
mysql:https://docs.oracle.com/cd/E17952_01/index.html
Oracle:https://docs.oracle.com/en/database/oracle/oracle-database/index.html
mysql的元數(shù)據(jù)都在information_schema
庫中以視圖的形式存在,只能看,不能修改。
進(jìn)入文檔后直接看information_schema
的介紹,里面詳細(xì)介紹了每一個(gè)表和字段。
常用的查詢mysql元數(shù)據(jù)sql
-- 數(shù)據(jù)庫 SELECT `schema_name` 庫名,`DEFAULT_CHARACTER_SET_NAME` 默認(rèn)字符集 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` -- 分區(qū) SELECT `TABLE_SCHEMA` 庫名,`TABLE_NAME` 表名,`PARTITION_NAME` 分區(qū)名,`PARTITION_ORDINAL_POSITION` 分區(qū)編號(hào),`PARTITION_EXPRESSION` 分區(qū)函數(shù)表達(dá)式 FROM `PARTITIONS` WHERE partition_name IS NOT NULL -- 視圖 SELECT * FROM `VIEWS` -- 索引 SELECT * FROM STATISTICS -- 主鍵 SELECT * FROM `COLUMNS` WHERE COLUMN_KEY = 'PRI'
Oracle里的元數(shù)據(jù)在靜態(tài)數(shù)據(jù)字典視圖。
我們是不能直接訪問數(shù)據(jù)字典表的,但可以通過數(shù)據(jù)字典視圖訪問其中的信息。要列出可用的數(shù)據(jù)字典視圖,查詢視圖DICTIONARY就可以。
在靜態(tài)數(shù)據(jù)字典視圖里有三大類開頭的視圖:ALL_、DBA_、USER_
ALL_視圖顯示所有的信息,當(dāng)前用戶,包括從其他架構(gòu)中對(duì)象的當(dāng)前用戶的模式以及信息訪問,如果當(dāng)前用戶擁有的權(quán)限或角色授權(quán)的方式訪問這些對(duì)象。
DBA_視圖顯示整個(gè)數(shù)據(jù)庫中的所有相關(guān)信息。DBA_視圖僅供管理員使用。只有擁有SELECT ANY DICTIONARY權(quán)限的用戶才能訪問它們。此權(quán)限D(zhuǎn)BA在系統(tǒng)最初安裝時(shí)分配給角色。
USER_視圖顯示從當(dāng)前用戶的模式中的所有的信息。查詢這些視圖不需要特殊權(quán)限。
ALL_,DBA_以及USER_對(duì)應(yīng)于單個(gè)數(shù)據(jù)字典表視圖通常是幾乎相同的。
官網(wǎng):
然后就可以通過文檔說明找到對(duì)應(yīng)的視圖。
查詢常用的Oracle元數(shù)據(jù)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 默認(rèn)值,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'; -- 分區(qū) 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';
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。