1 引言
近年來,國內許多高校逐步建立了網(wǎng)絡基礎設施,構建了一些應用系統(tǒng)。但由于缺乏對數(shù)字校園總體結構的認識,出現(xiàn)了系統(tǒng)構建各自為政,缺乏統(tǒng)一規(guī)劃,已構建的系統(tǒng)互割裂,信息與資源無法共享,而有些系統(tǒng)則集成度過高、維護與升級困難,網(wǎng)絡基礎服務平臺與應用系統(tǒng)脫節(jié)等問題。
在數(shù)字化校園的建設中,urp(university resource plan)概念的提出很好地解決了信息共享等問題。urp通過建立統(tǒng)一的數(shù)據(jù)庫,制定統(tǒng)一的信息標準,使各種信息系統(tǒng)以松散耦合的方式集成起來,保障了數(shù)據(jù)的一致性、可靠性、可用性和安全性。原有系統(tǒng)中的歷史數(shù)據(jù),可以通過數(shù)據(jù)遷移的方式導入到新系統(tǒng)中。但在數(shù)據(jù)遷移的過程中,新的問題也隨之而來。
2 數(shù)據(jù)遷移所面臨的問題
目前,信息系統(tǒng)的開發(fā)大都是利用sql server、oracle、sybase等大型數(shù)據(jù)庫,“數(shù)字化校園”建設中的數(shù)據(jù)庫系統(tǒng)也大多采用這幾種數(shù)據(jù)庫。而dbase、foxbase、foxpro是我國近年來應用比較廣泛的數(shù)據(jù)庫開發(fā)軟件,高校中仍有很多管理系統(tǒng)采用這種dbf格式的數(shù)據(jù)庫。隨著新系統(tǒng)的使用,原有系統(tǒng)中多年來積累的大量的寶貴的數(shù)據(jù)資料如何導入到新系統(tǒng)中,成為一個要解決的問題,也就是我們將面臨如何將原始的數(shù)據(jù)遷移到新系統(tǒng)數(shù)據(jù)庫中。
3 解決思路
統(tǒng)一數(shù)據(jù)庫的主要目的是實現(xiàn)數(shù)據(jù)共享,保障數(shù)據(jù)的一致性。但不論是新的信息系統(tǒng),還是原有的信息系統(tǒng),每個系統(tǒng)的業(yè)務本身并沒有發(fā)生本質的變化。因此在數(shù)據(jù)庫的結構到數(shù)據(jù)方面,都可以保持基本一致,只是采用的數(shù)據(jù)庫平臺不同。另外,sql server自身提供的dts(data transformation services)工具,也包含了將dbase、foxbase、foxpro等舊格式數(shù)據(jù)庫文件導入到sql數(shù)據(jù)庫的功能。
因此,根據(jù)實際的業(yè)務需求,利用asp.net所提供的數(shù)據(jù)庫操作功能,配合sql語句來編程,完全可以替代dts的所有功能,從而實現(xiàn)大量的歷史數(shù)據(jù)遷移至新的數(shù)據(jù)庫系統(tǒng)中。
4 設計與實現(xiàn)
以全國高校畢業(yè)生就業(yè)管理系統(tǒng)為例,具體說明如何實現(xiàn)數(shù)據(jù)遷移功能。
原系統(tǒng)為教育部統(tǒng)一使用的單機版軟件,采用foxpro編寫,并使用dbf格式文件存儲數(shù)據(jù)。新系統(tǒng)是采用b/s結構,使用asp.net編寫及sql server數(shù)據(jù)庫存儲數(shù)據(jù)。
在編寫程序進行數(shù)據(jù)遷移的過程中需要解決以下幾個問題:
(1) 原系統(tǒng)數(shù)據(jù)文件為dbf格式,在sql server中,dbf文件所在的文件夾被認為是一個數(shù)據(jù)庫,dbf文件被認為是一個數(shù)據(jù)表。
(2) 數(shù)據(jù)遷移過程中,dbf文件可能存放在客戶端,sql server數(shù)據(jù)庫在服務器端,這需要將dbf文件先上傳至服務器端再進行操作。
(3) 根據(jù)用戶業(yè)務需求,數(shù)據(jù)遷移功能應包含初次遷移、追加數(shù)據(jù)、覆蓋數(shù)據(jù)等功能。
4.1 dbf文件上傳
傳統(tǒng)的dbf格式數(shù)據(jù)文件,一般文件體積較小,因此采用asp.net提供的上傳組件即可。對于上傳文件類型,限定為.dbf格式。以上傳學生基本信息表student.dbf為例,上傳功能代碼如下:
//判斷文件大小是否為0
if (file1.postedfile.contentlength>0)
{
string fileext=path.getextension(file1.
postedfile.filename).tolower();
//判斷是否為dbf格式文件
if(fileext!=”.dbf”)
{
//出錯提示
label1.text=”只能上傳dbf格式文件!!“;
}
//合法的非空的dbf文件
else
{
//指定上傳目錄
string filepath=server.mappath(”data/”);
//上傳至指定目錄中
file1.postedfile.saveas(filepath+
“student.dbf”);
//進行相關數(shù)據(jù)遷移操作
……
}
}
else
{
//出錯提示
label1.text=”上傳文件字節(jié)數(shù)為0!!“;
}
更多信息請查看IT技術專欄