
引言
近年来 国内许多高校逐步建立了网络基础设施 构建了一些应用系统 但由于缺乏对数字校园总体结构的认识 出现了系统构建各自为政 缺乏统一规划 已构建的系统互割裂 信息与资源无法共享 而有些系统则集成度过高 维护与升级困难 网络基础服务平台与应用系统脱节等问题
在数字化校园的建设中 URP(University Resource Plan)概念的提出很好地解决了信息共享等问题 URP通过建立统一的数据库 制定统一的信息标准 使各种信息系统以松散耦合的方式集成起来 保障了数据的一致性 可靠性 可用性和安全性 原有系统中的历史数据 可以通过数据迁移的方式导入到新系统中 但在数据迁移的过程中 新的问题也随之而来
数据迁移所面临的问题
目前 信息系统的开发大都是利用SQL Server Oracle Sybase等大型数据库 数字化校园 建设中的数据库系统也大多采用这几种数据库 而Dbase FoxBASE FoxPro是我国近年来应用比较广泛的数据库开发软件 高校中仍有很多管理系统采用这种DBF格式的数据库 随着新系统的使用 原有系统中多年来积累的大量的宝贵的数据资料如何导入到新系统中 成为一个要解决的问题 也就是我们将面临如何将原始的数据迁移到新系统数据库中
解决思路
统一数据库的主要目的是实现数据共享 保障数据的一致性 但不论是新的信息系统 还是原有的信息系统 每个系统的业务本身并没有发生本质的变化 因此在数据库的结构到数据方面 都可以保持基本一致 只是采用的数据库平台不同 另外 SQL Server自身提供的DTS(Data Transformation Services)工具 也包含了将Dbase FoxBASE FoxPro等旧格式数据库文件导入到SQL数据库的功能
因此 根据实际的业务需求 利用ASP NET所提供的数据库 *** 作功能 配合SQL语句来编程 完全可以替代DTS的所有功能 从而实现大量的历史数据迁移至新的数据库系统中
设计与实现
以全国高校毕业生就业管理系统为例 具体说明如何实现数据迁移功能
原系统为教育部统一使用的单机版软件 采用FoxPro编写 并使用DBF格式文件存储数据 新系统是采用B/S结构 使用ASP NET编写及SQL Server数据库存储数据
在编写程序进行数据迁移的过程中需要解决以下几个问题
( ) 原系统数据文件为DBF格式 在SQL Server中 DBF文件所在的文件夹被认为是一个数据库 DBF文件被认为是一个数据表
( ) 数据迁移过程中 DBF文件可能存放在客户端 SQL Server数据库在服务器端 这需要将DBF文件先上传至服务器端再进行 *** 作
( ) 根据用户业务需求 数据迁移功能应包含初次迁移 追加数据 覆盖数据等功能
DBF文件上传
传统的DBF格式数据文件 一般文件体积较小 因此采用ASP NET提供的上传组件即可 对于上传文件类型 限定为 DBF格式 以上传学生基本信息表student dbf为例 上传功能代码如下
//判断文件大小是否为
if (File PostedFile ContentLength> )
{
string fileExt=Path GetExtension(File
PostedFile FileName) ToLower();
//判断是否为DBF格式文件
if(fileExt!= dbf )
{
//出错提示
Label Text= 只能上传dbf格式文件!! ;
}
//合法的非空的dbf文件
else
{
//指定上传目录
string filepath=Server MapPath( Data/ );
//上传至指定目录中
File PostedFile SaveAs(filepath+
student dbf );
//进行相关数据迁移 *** 作
……
}
}
else
{
//出错提示
Label Text= 上传文件字节数为 !! ;
}
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();
// *** 作成功提示信息
Label Text= 导入并生成学生数据表成功!! ;
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();
// *** 作成功提示信息
Label Text= 导入学生数据表成功!! ;
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();
// *** 作成功提示信息
Label Text= 覆盖学生数据表成功!! ;
从上面的代码中 可以看出覆盖 *** 作被分解为删除 追加两步执行
类似的 也可以先删除SQL Server中的student数据表 然后采用 的导入并生成数据表两个 *** 作来实现覆盖数据 其中 删除数据表可使用SQL 命令 DROP TABLE student 来实现
结 语
在程序的可靠性 准确性等方面 通过对数万条学生信息的迁移测试和校验 数据的导入 追加 覆盖等功能 完全达到了要求 能将原有的DBF数据文件准确快速的导入到SQL Server数据库中
lishixinzhi/Article/program/net/201311/13312
方法一:
将\Microsoft SQL Server\MSSQL\DATA文件夹中的syntt_datamdf和syntt_logldf文件复制到安装有数据库服务器的机器的文件夹中(可以是本机的\Microsoft SQL Server\MSSQL\DATA\文件夹),然后进入企业管理器。右键点击“数据库”,在浮动菜单中选择“所有任务”中的“附加数据库”。
在随后的提示页面中选择刚才复制过来的MDF文件,如果想指定数据库的所有者,在“指定数据库所有者”选择框中选择你认为合适的用户。如果想修改数据库的名字,可在“附加为”框中输入新的数据库名字(对本数据库,不建议这么做,因为这样的话,整个程序中所有涉及数据库连接的代码都要随之修改,那将是不必要的劳动)。
在进行完上述的工作之后,直接点击“确定”就可进行数据的SQL Server 数据转移转移。
方法二:
(方法一)是针对数据库中没有本数据库的服务器,如果数据库中已经建有与该数据库名称相同的数据库,则直接按照备份数据库的恢复 *** 作就可完成数据的SQL Server 数据转移转移。
方法如下所述:
这种方法首先要在本机上建立一个备份文件,具体 *** 作介绍如下:
1、 在企业管理器中打开服务器组以及指定的服务器。然后右键点击需要备份的数据库在这里是syntt,在浮动菜单中选择“所有任务”菜单下的“备份数据库”,打开数据备份对话框。
2、 选择“常规”选项卡,在名称对话框中输入本分集合名称,在“描述”文本框中输入备份集描述文本信息。在“备份”组下选择备份 *** 作类型,共有以下几种:
数据库—完全:完整备份数据库。
数据库—差异:增量备份数据库。
事务日志:事务日志备份。
文件和文件组:数据库文件和文件组备份。
在“目的”组中指定备份设备或者备份文件名称,选择“添加”按钮添加备份设备或者文件;“删除”按钮用来删除备份设备和备份文件;选择“内容”按钮,则可查看已经存储在备份设备或文件中的备份信息。
在“重写”组中有两种选项:
追加到媒体:选择该选项,表示需要保存备份设备或文件中以前的备份数据。
重写现有媒体:要求本次被分数据覆盖以前的备份数据,从而节省存储空间。
在“调度”组中,安排数据备份的时间。用来指定数据库备份在将来的某个时间执行
3、 “选项”选项卡,设置数据库备份 *** 作选项。其中的内容主要有以下几项:
完成后验证备份:要求在备份结束时对备份数据进行校验。
备份后d出磁带:只对磁带备份设备有效,他要求在备份结束时自动卸带。
删除事务日志中不活动的条目:要求在事务日志备份结束时删除事务日志中的已经完成的事务日志条目。
检查媒体集名称和备份集到期时间:要求在备份前检查介质集名称和原备份集中备份SQL Server 数据转移的有效期,以防止意外重写破坏原来的备份数据。
备份集到期时间:设置备份集的有效期。
初始化并标识媒体:只对磁带设备有效。选择该选项后,SQL Server在备份时将Microsoft定义的磁带格式信息写入介质的开始部分。此时,可以在“媒体集名称”和“媒体集描述”文本框中定义介质集名称和介质描述信息。
4、 在进行完上述的 *** 作之后,剩下的任务就是点击“确定”,使系统开始进行数据库的备份 *** 作。
到目前为止,我们已经有了一个数据库的备份文件,剩下的任务就是怎么将这个文件还原至另外的数据库服务器中了。
1、因为使用企业管理器进行数据库的恢复只能是在本机进行,所以在进行数据还原之前,必须将刚才所作的备份文件复制到本机,然后在本机选择“syntt”数据库,右键点击它,在显示出来的浮动菜单中选择“所有任务”下的“还原数据库”。
2、在还原数据库对话框中,在“常规”选项卡中的选择“从设备”的数据恢复方法,通过“选择设备”按钮选择刚才复制过来的文件。
“常规”选项卡与“选项”选项卡中的具体内容如下所示:
“常规”选项卡:
数据库恢复方法:包括“数据库”、“文件组或文件”、“从设备”三种恢复方式。
“数据库”方式:选择该项时,从“显示数据库备份”列表中选择需要显示的指定数据库备份集合,从“要还原的第一个备份”列表框中选择首先使用哪一个备份集恢复数据库;“文件组或文件”:选择它时,数据库恢复部件列出指定数据库备份集合中备份的数据库文件或文件组,管理员可从这些备份文件中选择恢复那个数据库文件或文件组;“从设备”:选择它时,管理员选择恢复数据库或其日志所使用的备份设备,之后再从该备份设备中选择使用哪一次备份中的数据恢复数据库或其日志。
3、点击“确定”,完成恢复 *** 作。
以上就是关于基于ASP.NET的数据迁移方法全部的内容,包括:基于ASP.NET的数据迁移方法、sql server 2008 数据库的迁移有哪些方法、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)