数据库迁移的方法、步骤和心得

关于数据库迁移的方法、步骤和心得

在项目中经常会遇到系统完全更换后的历史数据迁移问题,以示对客户历史工作的尊重,何况很多数据仍有保留的必要。
那怎么做历史数据迁移呢?

系统分析:
1、分析原有的业务系统
精确到大致的系统功能模块、大致的处理流程即可
2、分析现有的业务系统
精确到大致的系统功能模块、大致的处理流程即可
3、分析两者自己的区别和差异
大致分析一下两个业务系统之间的区别,有助于确定工作量和工作进度
4、分析用户对旧有数据的需求
分析对旧有数据的需求,才不至于盲目的全部性的进行迁移
5、分析用户对旧有数据的处理规则

旧有数据的处理规则,一般分为以下几类:
1、基础数据,通常这一类容易迁移,数据格式简单,但是会影响所有的相关业务数据,关注点为数据的主键和唯一键的方式。
2、纯历史数据的导入,仅供参考用的,这一类数据导入容易
 2.1
纯历史数据
 这一类数据处理起来会比较容易,一次性导入即可,后续采用增量数据导入。
 2.2
流程性数据
 这一类数据只有在记录完全关闭后才能结束,需要进行增量导入和数据更新,同时还要进行相关查询界面的开发,以保证旧有数据能够在新系统中查询的到。
3、新老系统表结构变化较大的历史数据
 这一类数据的工作量是最重的,就需要仔细去研究新老业务系统的数据结构了。
 1、尽量通过甲方单位来收集齐全相关原系统的相关设计文档,这一点对数据分析很有帮助,通过人的感觉和对数据的观察来分析毕竟不太靠谱。
 2、在原系统上进行相关数据的观察,了解数据的变化和数据表数据的关系(对于比较难以理解的相关字段很有帮助)
 3、比较新老系统数据的差异,如果实在很不靠谱的话,建议按2.2去处理。

系统设计:
1、做完系统分析之后,对相关数据进行归类,基础数据、纯历史数据、变化较大的历史数据
2、先从简单的入手,给自己点信心
3、在excel表中进行相关表的数据字典对照,勾画出对应字段、转换逻辑、依赖关系、必要时在新系统表上做相应的冗余,等数据迁移完毕后再清除。
关键点:
不同数据库的字段类型的匹配问题,比如SQLServer的text,在oracle应该对应clob,但是宁愿转换成几个varchar2,从实现角度相对容易些。
关于主键的问题,一致的数据类型尽量维持现有状态,不一致的尽量采用oracle的序列或sqlserver的identity
int,但是迁移完毕后,要注意序列值的更新

系统实现:
1、PL/SQL或T-SQL,DTS、SSIS或者PowerBuilder的管道作为数据迁移的方式
2、相关业务逻辑的迁移,与数据完整性和业务相关的存储过程、触发器、函数的改写,甚至SQL的改写
3、业务查询页面的编写

后话:
1、数据迁移没有特别或高级的方法
2、对业务数据的分析最为关键,需要不断的尝试在新系统上不断的测试
3、数据迁移技术,主要通过SQL、存储过程、甚至游标来实现,优先级也如上

还有一种数据迁移仅仅是数据库的平迁或异构数据库迁移
数据库平迁,即为了性能扩展需要从一台服务器迁移到另外一台服务器上,用数据库的导出导入或备份恢复工具处理即可,当然也要考虑迁移后的一些序列字段的初始值。
异构数据迁移,即从一个数据库平台迁移到另外一个数据库平台,用ETL工具或SQL均可实现,不过要注意业务逻辑的迁移,即存储过程、函数、触发器之类的

原文链接:http://blog.csdn.net/baoqiangwang/article/details/5492910

数据库迁移的方法、步骤和心得,布布扣,bubuko.com

时间: 2024-11-08 11:15:40

数据库迁移的方法、步骤和心得的相关文章

关于数据迁移的方法、步骤和心得

在项目中经常会遇到系统完全更换后的历史数据迁移问题,以示对客户历史工作的尊重,何况很多数据仍有保留的必要. 那怎么做历史数据迁移呢? 系统分析: 1.分析原有的业务系统 精确到大致的系统功能模块.大致的处理流程即可 2.分析现有的业务系统 精确到大致的系统功能模块.大致的处理流程即可 3.分析两者自己的区别和差异 大致分析一下两个业务系统之间的区别,有助于确定工作量和工作进度 4.分析用户对旧有数据的需求 分析对旧有数据的需求,才不至于盲目的全部性的进行迁移 5.分析用户对旧有数据的处理规则 旧

解决EntityFramework数据库无法自动迁移解决方法

解决EntityFramework数据库无法自动迁移解决方法 如果在迁移数据库执行完一下三个命令没有成功的话请按下面的步骤去进行数据库迁移 1:Enable-Migrations 2:Add-Migration Student. 3:update-database 一般执行以上3个命令都会成功 第一步:删除迁移命令生成的文件夹:Migrations文件夹,重新生成 第二步:执行迁移命令: Add-Migration ,例如:有一个Student的实体类(Model) 为了命名规范,我们一般执行迁

用ADO操作数据库的方法步骤(ZT)

http://www.cppblog.com/changshoumeng/articles/113437.html 学习ADO时总结的一些经验 用ADO操作数据库的方法步骤 ADO接口简介 ADO库包含三个基本接口:_ConnectionPtr接口._CommandPtr接口和_RecordsetPtr接口. _ConnectionPtr接口返回一个记录集或一个空指针. 通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程.使用_ConnectionPtr接口返回一个

oracle数据库迁移步骤思路

背景:做为一名DBA,oracle数据库迁移是经常要遇到的事情,正好最近我也在迁移一个业务系统,数据库就是oracle,顺便记录一下. 说明:为了方便说明,旧的数据库称为A,新的为B.用户和密码是IRP/IRP ,  B是全新的环境. 步骤思路: 1.从 A 上导出数据文件. sqlplus /nolog conn / as sysdba EXP IRP/IRP BUFFER=64000 FILE=D:\test.DMP log=D:\test.log OWNER=IRP 2.在A机器上查看用户

[Windows Server 2008] MySQL单数据库迁移方法

★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:MySQL数据库迁移方法 注意:此方法只适用于MyISAM模式的数据库(如护卫神·PHP套件):InnoDB不适合本方法. 本节主要讲述单个数据库迁移:如果是MySQL整体迁移,请查看我站其他视频. 操作流程:先在旧服务器上备份数据库,然后在新服务器创建数据库,再恢复数据. 1.查找数据库路径    打开[服

数据库迁移后报错提示MySQL Error:Can''t find file errno: 13 - Permission denied的解决方法

用户MYSQL数据库迁移后,遇到报错MySQL Error:Can't find file (errno: 13 - Permission denied)使用以下指令重新设置所有者和权限,依然不能解决. [[email protected] ~]# chown 501:501 -R /www/server/data/comdb [[email protected]~]# chmod 666 -R /www/server/data/comdb [[email protected]~]# servi

用ADO操作数据库的方法步骤

用ADO操作数据库的方法步骤 学习ADO时总结的一些经验 - 技术成就梦想 - 51CTO技术博客 http://freetoskey.blog.51cto.com/1355382/989218 ADO接口简介 ADO库包含三个基本接口:_ConnectionPtr接口._CommandPtr接口和_RecordsetPtr接口. _ConnectionPtr接口返回一个记录集或一个空指针. 通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程.使用_Connecti

数据库迁移之从oracle 到 MySQL最简单的方法

数据库迁移之从oracle 到 MySQL最简单的方法 因工作需要将oracle数据库换到MySQL数据库,数据量比较大,百万级别的数据,表也比较多,有没有一种既快捷又安全的方法呢?答案是肯定的,下面介绍一个工具,非常的好用 需要的工具:Navicat Premium  Navicat Premium 原本是收费的,但是网上也有很多绿色版(盗版)的,本人亲测,也挺好用的,土豪可以忽略这句话. 第一步: 安装Navicat Premium,打开软件,建立数据库的链接,一个是原oracle数据库的链

SQLServer2005数据库数据转换SQLServer2000的方法步骤

1. 生成for 2000版本的数据库脚本 打开"对象资源管理器"(2005 的manger studio,没有的话按F8), 连接到你的实例 右键要转到2000的库 任务 生成脚本 在"脚本向导"的"选择数据库"中, 确定选择的是要转到2000的库 勾选"为所选数据库中的所有对象编写脚本" 在接下来的"选择脚本选项"中, 找到"为服务器版本编写脚本"项, 选择"SQL Ser