摘 要:隨著校園網基礎設施的不斷完善,基于校園網的應用得到迅速發展,數字化校園建設成為當前國內各高校研究的熱點問題。數字化校園建設是各高校信息化建設的重要系統工程,其主要任務之一是要整合校園內的各種數據。在整合數據的過程中,如何遷移大量歷史數據是人們所面臨的一個重要問題。針對這一問題,以DBF導入SQL Server數據庫為例,介紹一種數據遷移的方法,并在ASP.NET環境下,用C#語言實現了該方法。該方法實現簡單、導入快速,在整合數據的過程中已得到實際的應用,便于實現其他數據環境之間的數據遷移。
關鍵詞:數字化校園;數據遷移;DBF;SQL Server;ASP.NET
中圖分類號:TP391 文獻標識碼:B 文章編號:1004373X(2008)1807103
Data Migration Methods Based on ASP.NET
WANG Qian,WANG Wei
(Xi′an University of Finance and Economics,Xi′an,710061,China)
Abstract:With the constant perfection of the campus network infrastructure,the applications based on campus network are developing rapidly.Digital campus construction becomes a hot topic of research in China universities.Digital campus construction is an important systemic project for modernization education.One of its main tasks is integrating all kinds of intramural.It is how to migrate mass historical data is a facing problem in the process of data integration.As an example,a method of migrate data from DBF to SQL Server database is proposed to solve this problem.This method is realized by C# language in the environment of ASP.NET.It has the property of simple realization and quick data migration,and has already found practical applications in the process of data integration.This method is easy to realize data migration in other data environments.
Keywords:digital campus;data transformation;DBF;SQL Server;ASP.NET
1 引 言
近年來,國內許多高校逐步建立了網絡基礎設施,構建了一些應用系統。但由于缺乏對數字校園總體結構的認識,出現了系統構建各自為政,缺乏統一規劃,已構建的系統互割裂,信息與資源無法共享,而有些系統則集成度過高、維護與升級困難,網絡基礎服務平臺與應用系統脫節等問題。
在數字化校園的建設中,URP(University Resource Plan)概念的提出很好地解決了信息共享等問題。URP通過建立統一的數據庫,制定統一的信息標準,使各種信息系統以松散耦合的方式集成起來,保障了數據的一致性、可靠性、可用性和安全性。原有系統中的歷史數據,可以通過數據遷移的方式導入到新系統中。但在數據遷移的過程中,新的問題也隨之而來。
2 數據遷移所面臨的問題
目前,信息系統的開發大都是利用SQL Server,Oracle,Sybase等大型數據庫,“數字化校園”建設中的數據庫系統也大多采用這幾種數據庫。而Dbase,FoxBASE,FoxPro是我國近年來應用比較廣泛的數據庫開發軟件,高校中仍有很多管理系統采用這種DBF格式的數據庫。隨著新系統的使用,原有系統中多年來積累的大量的寶貴的數據資料如何導入到新系統中,成為一個要解決的問題,也就是將面臨如何將原始的數據遷移到新系統數據庫中。
3 解決思路
統一數據庫的主要目的是實現數據共享,保障數據的一致性。但不論是新的信息系統,還是原有的信息系統,每個系統的業務本身并沒有發生本質的變化。因此在數據庫的結構到數據方面,都可以保持基本一致,只是采用的數據庫平臺不同。另外,SQL Server自身提供的DTS(Data Transformation Services)工具,也包含將Dbase,FoxBASE,FoxPro等舊格式數據庫文件導入到SQL數據庫的功能。
因此,根據實際的業務需求,利用ASP.NET所提供的數據庫操作功能,配合SQL語句編程,完全可以替代DTS的所有功能,從而實現將大量的歷史數據遷移至新的數據庫系統中。
4 設計與實現
以全國高校畢業生就業管理系統為例,具體說明如何實現數據遷移功能。
原系統為教育部統一使用的單機版軟件,采用FoxPro編寫,并使用DBF格式文件存儲數據。新系統是采用B/S結構,使用ASP.NET編寫及SQL Server數據庫存儲數據。
在編寫程序進行數據遷移的過程中需要解決以下幾個問題:
(1)原系統數據文件為DBF格式,在SQL Server中,DBF文件所在的文件夾被認為是一個數據庫,DBF文件被認為是一個數據表。
(2)在數據遷移過程中,DBF文件可能存放在客戶端,SQL Server數據庫在服務器端,這需要將DBF文件先上傳至服務器端再進行操作。
(3)根據用戶業務需求,數據遷移功能應包含初次遷移、追加數據、覆蓋數據等功能。
4.1 DBF文件上傳
傳統的DBF格式數據文件,一般文件體積較小,因此采用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\");
//進行相關數據遷移操作
……
}
}
else
{
//出錯提示
Label1.Text=\"上傳文件字節數為0!!\";
}
4.2 DBF文件導入
若在SQL Server數據庫中不存在目標數據表,則使用導入并生成新表的命令。導入并建立新數據表功能代碼如下:
//打開SQL Server數據庫連接
myConnection.Open();
//filepath為DBF文件上傳時定義的目標文件夾
//該語句將指定文件夾中的student.dbf文件
//導入至SQL Server的新建數據表student中
string creattb=\"SELECT * INTO student FROM
Openrowset(′MSDASQL′,′Driver=Microsoft
Visual FoxPro Driver;SourceDB=\"+filepath+\";
SourceType=DBF′,′select* from student′)\";
//定義SQL命令
SqlCommand myComm=new SqlCommand(
creattb,myConnection);
//執行導入命令
myComm.ExecuteNonQuery();
//關閉數據庫連接
myComm.Dispose();
myConnection.Close();
//操作成功提示信息
Label2.Text=\"導入并生成學生數據表成功!!\";
4.3 DBF文件追加
若SQL Server數據庫中已存在student數據表,則使用追加命令導入數據。追加數據功能代碼如下:
//打開SQL Server數據庫連接
myConnection.Open();
//filepath為DBF文件上傳時定義的目標文件夾
//該語句將指定文件夾中的student.dbf文件
//追加至SQL Server的數據表student中
string creattb=\"INSERT INTO student
SELECT * FROM Openrowset(′MSDASQL′,
′Driver=Microsoft Visual FoxPro Driver;
SourceDB=\"+filepath+\";
SourceType=DBF′,′select* from student′)\";
//定義SQL命令
SqlCommand myComm=new SqlCommand(
creattb,myConnection);
//執行導入命令
myComm.ExecuteNonQuery();
//關閉數據庫連接
myComm.Dispose();
myConnection.Close();
//操作成功提示信息
Label2.Text=\"導入學生數據表成功!!\";
4.4 DBF文件覆蓋
若導入的數據需要覆蓋SQL Server數據庫中原有數據,則需要先執行刪除語句,再執行導入語句。數據覆蓋功能代碼如下:
//打開SQL Server數據庫連接
myConnection.Open();
//刪除SQL Server中student數據表內容
string creattb=\"delete from student\";
//定義SQL命令
SqlCommand myComm=new SqlCommand
(creattb,myConnection);
//執行刪除命令
myComm.ExecuteNonQuery();
//filepath為DBF文件上傳時定義的目標文件夾
//該語句用指定文件夾中的student.dbf文件
//覆蓋SQL Server數據表student中的數據
creattb=\"INSERT INTO student SELECT *
FROM Openrowset(′MSDASQL′,
′Driver=Microsoft Visual FoxPro Driver;
SourceDB=\"+filepath+\";
SourceType=DBF′,′select* from student′)\";
//重新定義SQL命令
myComm.CommandText=creattb;
//執行導入命令
myComm.ExecuteNonQuery();
//關閉數據庫連接
myComm.Dispose();
myConnection.Close();
//操作成功提示信息
Label2.Text=\"覆蓋學生數據表成功!!\";
從上面的代碼可以看出,覆蓋操作被分解為刪除、追加2步執行。
類似地,也可以先刪除SQL Server中的student數據表,然后采用4.1節的導入并生成數據表操作來實現覆蓋數據。其中,刪除數據表可使用SQL 命令\"DROP TABLE student\"來實現。
5 結 語
在程序的可靠性、準確性等方面,通過對數萬條學生信息的遷移測試和校驗,數據的導入、追加、覆蓋等功能,完全達到了要求,能將原有的DBF數據文件準確快速地導入SQL Server數據庫中。
DBF數據遷移到SQL Server數據庫中的方法,為解決數據遷移中的穩定性、安全性、準確性等問題提供了有力的幫助,有效地解決了大量歷史數據的繼承問題。同樣,這種遷移方法只需替換相應的SQL語句,即可用于MDB文件、EXCEL文件以及特定格式的文本文件等各種數據庫文件的數據遷移中。
參 考 文 獻
[1]張繼東,王穎.數字化校園URP系統的構建[J].北京郵電大學學報:社會科學版,2008,10(1):7275.
[2]祝偉華,楊丹,桑軍,等.數字化校園設計與構建方法研究[J].計算機科學,2005,32(8):9799.
[3]崔子筠,羅慶華.建立基于校園網的URP系統[J].微型電腦應用,2002,18(7):2527.
[4]熊輝,劉彥峰,郭大慶.分布式異構數據庫遷移系統的設計與實現[J].計算機工程,2008,34(4):5759.
[5]孔芳,徐汀榮.數據遷移工具的設計研究[J].計算機應用與軟件,2005,22(2):133135.
[6]柏瑞芊,榮鵬輝.基于DTS的原始數據轉換方法研究[J].科技資訊,2006,33:220221.
[7]王勝德,楊學強.利用DTS實現異構數據庫的數據交換[J].計算機應用,2003,23(7):132134.
[8]梁秀娟.醫院信息系統升級中的數據遷移方案與實現[J].中國數字醫學,2007,2(11):5153.
[9]杜軍威,隋樹林,吳鵬.異構數據庫之間數據遷移的實現方法[J].青島化工學院學報:自然科學版,2002,23(3):7881.
[10]葛管庫.基于Foxpro與SQL Server數據繼承問題的設計與實現[J].洛陽大學學報,2002,17(4):5760.
作者簡介 王 倩 女,1973年出生,助理工程師。主要研究方向為現代教育技術、信息管理等。
王 偉 男,1973年出生,高級工程師。主要研究方向為計算機網絡及應用、Web程序設計、多值邏輯等。