小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

基于ASP.NET的數(shù)據(jù)遷移辦法

 悟靜 2012-01-30
1 引言

  近年來,國內(nèi)許多高校逐步建立了網(wǎng)絡基礎設施,構(gòu)建了一些應用系統(tǒng)。但由于缺乏對數(shù)字校園總體結(jié)構(gòu)的認識,出現(xiàn)了系統(tǒng)構(gòu)建各自為政,缺乏統(tǒng)一規(guī)劃,已構(gòu)建的系統(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ā)生本質(zhì)的變化。因此在數(shù)據(jù)庫的結(jié)構(gòu)到數(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結(jié)構(gòu),使用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?。 ?

  }

  4.2 DBF文件導入

  若在SQL Server數(shù)據(jù)庫中不存在目標數(shù)據(jù)表,則使用導入并生成新表的命令。導入并建立新數(shù)據(jù)表功能代碼如下:

  //打開SQL Server數(shù)據(jù)庫連接

  myConnection.Open();

  //filepath為DBF文件上傳時定義的目標文件夾

  //該語句將指定文件夾中的student.dbf文件

  //導入至SQL Server的新建數(shù)據(jù)表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);

  //執(zhí)行導入命令

  myComm.ExecuteNonQuery();

  //關閉數(shù)據(jù)庫連接

  myComm.Dispose();

  myConnection.Close();

  //操作成功提示信息

  Label2.Text=”導入并生成學生數(shù)據(jù)表成功??!“;

  4.3 DBF文件追加

  若SQL Server數(shù)據(jù)庫中已存在student數(shù)據(jù)表,則使用追加命令導入數(shù)據(jù)。追加數(shù)據(jù)功能代碼如下:

  //打開SQL Server數(shù)據(jù)庫連接

  myConnection.Open();

  //filepath為DBF文件上傳時定義的目標文件夾

  //該語句將指定文件夾中的student.dbf文件

  //追加至SQL Server的數(shù)據(jù)表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);

  //執(zhí)行導入命令

  myComm.ExecuteNonQuery();

  //關閉數(shù)據(jù)庫連接

  myComm.Dispose();

  myConnection.Close();

  //操作成功提示信息

  Label2.Text=”導入學生數(shù)據(jù)表成功!!“;

  4.3 DBF文件覆蓋

  若導入的數(shù)據(jù)需覆蓋SQL Server數(shù)據(jù)庫中原有數(shù)據(jù),則需先執(zhí)行刪除語句,再執(zhí)行導入語句。數(shù)據(jù)覆蓋功能代碼如下:

  //打開SQL Server數(shù)據(jù)庫連接

  myConnection.Open();

  //刪除SQL Server中student數(shù)據(jù)表內(nèi)容

  string creattb=”delete from student”;

  //定義SQL命令

  SqlCommand myComm=new SqlCommand

  (creattb,myConnection);

  //執(zhí)行刪除命令

  myComm.ExecuteNonQuery();

  //filepath為DBF文件上傳時定義的目標文件夾

  //該語句用指定文件夾中的student.dbf文件

  //覆蓋SQL Server數(shù)據(jù)表student中的數(shù)據(jù)

  creattb=”INSERT INTO student SELECT *

  FROM Openrowset(’MSDASQL’,

  ‘Driver=Microsoft Visual FoxPro Driver;

  SourceDB=”+filepath+”;

  SourceType=DBF’,’select* from student’)”;

  //重新定義SQL命令

  myComm.CommandText=creattb;

  //執(zhí)行導入命令

  myComm.ExecuteNonQuery();

  //關閉數(shù)據(jù)庫連接

  myComm.Dispose();

  myConnection.Close();

  //操作成功提示信息

  Label2.Text=”覆蓋學生數(shù)據(jù)表成功?。 ?

  從上面的代碼中,可以看出覆蓋操作被分解為刪除、追加兩步執(zhí)行。

  類似的,也可以先刪除SQL Server中的student數(shù)據(jù)表,然后采用4.1的導入并生成數(shù)據(jù)表兩個操作來實現(xiàn)覆蓋數(shù)據(jù)。其中,刪除數(shù)據(jù)表可使用SQL 命令“DROP TABLE student”來實現(xiàn)。

  5 結(jié) 語

  在程序的可靠性、準確性等方面,通過對數(shù)萬條學生信息的遷移測試和校驗,數(shù)據(jù)的導入、追加、覆蓋等功能,完全達到了要求,能將原有的DBF數(shù)據(jù)文件準確快速的導入到SQL Server數(shù)據(jù)庫中。

  DBF數(shù)據(jù)遷移到SQL Server數(shù)據(jù)庫中的方法,為解決數(shù)據(jù)遷移中的穩(wěn)定性、安全性、準確性等問題提供了有力的幫助,有效地解決了大量歷史數(shù)據(jù)的繼承問題。同樣,這種遷移方法只需替換相應的SQL語句,即可用于MDB文件、EXCEL文件以及特定格式的文本文件等各種數(shù)據(jù)庫文件的數(shù)據(jù)遷移中

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多