绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
关于数据迁移的方法、步骤和心得
2020-05-22 10:05:11

十年前写的,那时候经历过几次数据迁移,然后写了出来,现在看看还是比较稚嫩的。

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

那怎么做历史数据迁移呢?

系统分析:

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均可实现,不过要注意业务逻辑的迁移,即存储过程、函数、触发器之类的


分享好友

分享这个小栈给你的朋友们,一起进步吧。

追梦IT人
创建时间:2020-02-12 11:47:47
20年IT工作经验,曾在华为、HP、移动、电网等国内外知名IT企业任职;关注领域包括证券、航空、制造、电信、电网等。在数据库开发和优化、数据仓库、系统架构、大中型项目管理、部门管理、数据挖掘和分析、数据治理、大数据方面有一定研究。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • bq_wang
    栈主

小栈成员

查看更多
  • 栈栈
  • 小雨滴
  • 我没
  • 飘絮絮絮丶
戳我,来吐槽~