針對數(shù)據庫中元數(shù)據的采集方法設計與實現(xiàn)
摘 要:
摘 要:數(shù)據庫中元數(shù)據的采集是標準符合性檢測等工作的基礎。為了獲取數(shù)據庫中的元數(shù)據信息,文章提出了針對多種數(shù)據庫中元數(shù)據的采集方法設計。該采集方法采用了字符串連接數(shù)據庫的方法實現(xiàn)了對多個不同數(shù)據庫的連接,根據連接的數(shù)據庫使用相應的元數(shù)據查詢SQL語句來實現(xiàn)對元數(shù)據的采集,最后使用xml文件的形式保存元數(shù)據。
關鍵詞:
關鍵詞:數(shù)據庫 元數(shù)據 信息采集
元數(shù)據是指用于描述數(shù)據的數(shù)據,是對數(shù)據及信息資源的描述性信息。本文中所要采集的數(shù)據庫中元數(shù)據主要是數(shù)據庫中對表的定義,字段的定義等,這些元數(shù)據信息是在標準符合性檢測工作中所需要檢測的信息。
標準符合性檢測是指根據國家和行業(yè)信息化的系列數(shù)據標準、技術文件及信息系統(tǒng)設計文件等中的規(guī)定,對信息系統(tǒng)的數(shù)據字典、數(shù)據庫表結構及數(shù)據庫內容等與標準的符合程度進行檢測的活動。其中在對數(shù)據庫表結構進行標準符合性檢測時,需要使用數(shù)據庫中表的元數(shù)據與相關標準進行比較。數(shù)據庫中元數(shù)據采集的需求正是在這樣的條件下產生的。
1 采集的元數(shù)據內容
根據標準符合性檢測的需求,我們將需要采集的元數(shù)據內容確定為表的元數(shù)據與字段的元數(shù)據。表的元數(shù)據信息主要包括標的名稱、表的記錄數(shù)、表的大小、表包含的字段、表的主鍵等,字段的元數(shù)據信息主要字段的名稱、字段的數(shù)據類型、字段占用字節(jié)數(shù)、字段是否允許為空、字段的備注信息等。
對于不同的數(shù)據庫,數(shù)據庫的元數(shù)據的存儲地址都不相同,元數(shù)據的信息存儲形式也不盡相同。如在SQL Server中字段的信息主要存儲在syscolumns、systypes 、sys.extended_properties等表中,而在Oracle數(shù)據庫中字段的信息主要存儲在USER_TAB_COLUMN 、USER_COL_COMMENTS表中且存儲的名稱也不相同。因此,采集元數(shù)據內容時需要根據數(shù)據庫類型的不同,在不同表中采集數(shù)據庫元數(shù)據的信息。
2 元數(shù)據查詢SQL語句的設計
由于不同的數(shù)據庫中元數(shù)據信息存儲的方式不同,因此在元數(shù)據查詢SQL語句的設計中需要根據不同的數(shù)據庫來設計不同的SQL語句。針對SQL Server數(shù)據庫的SQL語句編寫如下:
從syscolumns表中獲取表的名字、字段序號、字段名、字段的數(shù)據類型、字段占用字節(jié)數(shù)、允許為空命名分別命名為dataTable、dataID、fieldName、dataType、fieldLen、idNull,再從sys.extended_properties表中獲取字段說明命名為memo。在連表查詢時從systypes表中取xtype值為U的項,確保表的信息是用戶創(chuàng)建的表,而非數(shù)據庫系統(tǒng)表。
在oracle數(shù)據庫中字段的信息位置與SQL Server數(shù)據庫不同,因此,oracle數(shù)據庫與SQL Server數(shù)據庫的查詢SQL語句在列名稱,表名稱方面有所不同。
在抽取不同數(shù)據庫的元數(shù)據信息時,采用的SELECT語句的結構順序必須相同,使生成元數(shù)據信息結構相同,便于元數(shù)據信息的下一步使用和操作。
3 采集的流程設計
在采集數(shù)據庫中元數(shù)據時,我們需要對數(shù)據庫進行訪問。在這里我們采用ADO的方式訪問數(shù)據庫。采用ADO的方式訪問數(shù)據庫,在用C#語言實現(xiàn)時可以分為以下幾個步驟:
第一, 調用命名空間。對于SQL Server數(shù)據庫需要引入System.Data.SqlClient命名空間。
第二, 創(chuàng)建連接字符串。連接字符串的創(chuàng)建需要用戶在界面輸入服務器地址、數(shù)據庫類型、數(shù)據庫端口號、用戶名、密碼等目標數(shù)據庫的信息。
第三, 創(chuàng)建連接的對象。使用關鍵字SqlConnection創(chuàng)建連接的對象。
第四, 連接數(shù)據庫。使用連接對象的Open()函數(shù)連接數(shù)據庫。
第五, 創(chuàng)建SQL字符串 connString。創(chuàng)建設計完成的元數(shù)據SQL查詢語句。
第六, 新建查詢的一個對象。使用關鍵字SqlCommand創(chuàng)建查詢的對象。
第七, 對對象的操作。使用ExecuteScalar();ExecuteReader();ExecuteNonQuery()等函數(shù)獲得查詢的結果,將結果以datatable或dataset的形式存儲。
第八, 關閉連接。使用連接對象的Close()函數(shù)關閉連接。
經過上面的數(shù)據庫訪問步驟,就可以得到所要查找的元數(shù)據的內容。將返回的元數(shù)據結構在界面的dataGridView控件中顯示,用戶可以將元數(shù)據內容保存為xml文件形式。
4 采集后元數(shù)據的保存
對于采集后的數(shù)據庫元數(shù)據信息采用xml文件的形式進行保存。使用xml文件可以方便實現(xiàn)元數(shù)據內容的傳送和保存。在保存數(shù)據時時我們自定義了xml文件的格式,使得xml文件的格式更加清晰明了。
由于NET Framework也提供了一個快速、非緩存、只向前的方式動態(tài)寫入xml數(shù)據的類,即XmlWriter類。因此,在實現(xiàn)時調用這個類實現(xiàn)xml文件的寫入和保存。自定義xml文件的具體實現(xiàn)為:使用WriteStartElement函數(shù)創(chuàng)建當前節(jié)點的子節(jié)點,并設置節(jié)點的屬性及其值,WriteEndElement函數(shù)來結束一個節(jié)點。WriteElementString函數(shù)來寫入節(jié)點包含的屬性及值。
5 結語
在對數(shù)據庫中元數(shù)據的采集過程中,完成了對部分的元數(shù)據的采集和存儲過程,并提供了較為友好的展示界面,但是還存在采集的元數(shù)據信息不夠全面的問題。在下一階段的研究中需要繼續(xù)研究元數(shù)據信息在不同的數(shù)據庫中的存儲,并優(yōu)化查詢的SQL語句來獲取更多,,更全面的元數(shù)據。
參考文獻:
[1]戴維森.SQL Server 2008數(shù)據庫設計與實現(xiàn)[M].北京:人民郵電出版社,2009.
[2]徐菁.元數(shù)據的設計原則和實用中的問題[J].圖書館理論與實踐,2008(6):48-51.
[3]希爾伯沙茨.數(shù)據庫系統(tǒng)概念[M].北京:機械工業(yè)出版社,2008.
[4]張紅強. Oracle數(shù)據庫實例教程[M].天津:天津大學出版社,2009.
[5]王珊. 數(shù)據庫系統(tǒng)概論[M].北京:高等教育出版社,2006.
本文編號:14537
本文鏈接:http://www.lk138.cn/kejilunwen/jisuanjikexuelunwen/14537.html