基于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.3 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=”覆盖学生数据表成功!!“;

  从上面的代码中,可以看出覆盖操作被分解为删除、追加两步执行。

  类似的,也可以先删除SQL Server中的student数据表,然后采用4.1的导入并生成数据表两个操作来实现覆盖数据。其中,删除数据表可使用SQL 命令“DROP TABLE student”来实现。

  5 结 语

  在程序的可靠性、准确性等方面,通过对数万条学生信息的迁移测试和校验,数据的导入、追加、覆盖等功能,完全达到了要求,能将原有的DBF数据文件准确快速的导入到SQL Server数据库中。

  DBF数据迁移到SQL Server数据库中的方法,为解决数据迁移中的稳定性、安全性、准确性等问题提供了有力的帮助,有效地解决了大量历史数据的继承问题。同样,这种迁移方法只需替换相应的SQL语句,即可用于MDB文件、EXCEL文件以及特定格式的文本文件等各种数据库文件的数据迁移中



相关阅读:
安全基础:简单解析Linux系统防火墙框架
搜索引擎核心技术(PHP编程思路) --[1]
SQL 提权 常用命令
巧用Recent模块加固Linux安全
xp_cmdshell开启与关闭
IE8 css overflow:hidden不起作用
JSP application(return String)用法详例
概述Oracle中的数据库名
XHTML教程一
初学者接触HTML了解一些HTML标记(3)
如何使用SQL 事件探查器?
初探SQL Server 2008综合数据可编程性
系统终止操作该如何解决?
认识并使用PHP超级全局变量
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 小学六年级作文550字:商人和他的女儿 祝元旦欢乐的句子 新年到来的钟声,善待每次感动,让我们心灵感应 把欢喜握在手上 笑着流泪 高中生的毕业自我鉴定 破泪弦 学校观摩活动心得体会 初中初二作文400字:「雍正皇帝」读后感 浦发银行第一阶段实习心得 小学二年级作文600字:不速之客 荔枝湾作文900字 你来我身边…… 林中乐章 院徽、院训、院旗设计大赛策划书 《你爱上别人 告诉我! 我会松开手让你走,既然给不了你幸福,那我让你去飞翔……》 关于丢的作文 接待送别礼仪面面观 推进乡镇事业单位改革的实践与探索 心理健康国旗下讲话稿 我还能怎么做? 上班族周末玩“失踪”给身体充电 留在北上广深 勿忘初心 方得始终 《中国好声音》金池:坚持是点亮梦想的灯 我的新生活作文400字 贷款 假收入证明 如何构建和谐警队透析 颁奖庆典 那一夜,我与未来人相遇作文1200字 2016中秋节晚会主持词 范文精选三则 中国儿女 再赠新兵 交通事故视频观后感 小学五年级作文500字:《老爸,别在吸烟》 贺陈雪丽婚礼 去苍山路上作文600字 风中赏荷花 2016年国土局工作总结和2017年工作思路 与自强不息为友作文800字 用一生的时光去祭奠 机械设计专业测绘实训报告范文 强奸爱,绑架你 蝌蚪的尾巴 钓鱼(罂粟花开) 去垟山溪玩作文 悠悠红薯情 最后的日子(转载)作文500字 开学典礼发言材料 小学五年级作文350字:班干部竞选演讲——我想竞选纪律委员 美国的战争

Copyright © 2016 phpStudy |