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

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

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

系统分析:

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

时间: 2024-11-09 02:46:36

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

Oracle的简单的创建dblink以及进行数据迁移的方法

1. 创建dblink 语法如下: create public database link zhaobsh connect to lcoe739999 identified by Test6530 using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 10.24.39.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME =ora11r2)))'; 2. 查询其他表中的数据

数据迁移经验总结——亿级别多表异构的数据迁移工作

由于系统改版,最近三个月在做数据迁移工作,由于业务的特殊,基本将数据迁移所能踩的坑都踩了一遍,决定好好做个总结. 迁移类型--新老系统表结构变化较大的历史数据 一.核心问题 1.新老表结构变化极大.新表是以deliver为核心,另外还涉及仓储系统的一张表,订单系统的4张表,并按照新的逻辑映射关系进行迁移. 2.增量数据迁移.在全量数据迁移时必然会有新的数据,这些数据应该实时进行迁移 3.亿级别数据性能.效率的考虑.由于订单业务非常重要,数据迁移带来的qps对数据库的压力非常大,需要不断测试迭代找

在Entity Framework 7中进行数据迁移

(此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注.) 题记:虽然EF7重新设计了Entity Framework,不过也还是能够支持数据迁移的. Entity Framework 7是微软ORM框架的一次重生,变得更加轻量级.因而默认情况是没有开启数据迁移(Migration)功能的,也即创建出来的数据库默认不会包含“__MigrationHistory”表.在这种情况下,数据模型的变更,需要你手动(通过SQL脚本)去修改对应的数据库结构.当然,你还是可以启用自

闲来无事,编写一个数据迁移小工具

一.前言 生命不息,折腾不止.近期公司有数据迁移的计划,从Sqlserver迁移到mysql,虽说网上有很多数据迁移方案,但闲着也是闲着,就自己整一个,权当做是练练手了 二.解决思路 整个迁移过程类似于ETL,将数据从来源端经过抽取(extract).转换(transform).加载(load)至目的端.读取并转换sqlserver库数据,将数据解析为csv文件,载入文件到mysql.流程如下: 抽取.转换此过程主要是处理源数据库与目标数据库表字段的映射关系,为了保证程序的通用性,通过配置文件映

redis cluster异地数据迁移,扩容,缩容

由于项目的服务器分布在重庆,上海,台北,休斯顿,所以需要做异地容灾需求.当前的mysql,redis cluster,elastic search都在重庆的如果重庆停电了,整个应用都不能用了. 现在考虑第一步做重庆和上海的异地容灾,大概测试了一下重庆的几台服务器之间大概是13m/s的传输速度也就是说100M的局域网带宽,重庆到上海只有1.2m/s的传输速度,大概10M的局域网带宽. 第一个方案先考虑简单的  mysql 重庆上海主主同步  redis cluster的master节点默认都设置在

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

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

数据迁移心得

  前几天出差,去客户现场帮忙迁移数据,经过几天的奋战,终于将迁移数据自动化起来,并且可以日跑批操作,这里小编就跟大家分享下,这其中踩过的坑(也可能是实战经验不丰富导致).  首先,荣小编我抱怨一下,不是自己熟悉的开发环境真的有些难过,给一台电脑,咱不说没有IDE,就连java都没有安装,连接数据库的工具也没有,唯一值得庆幸的是有xshell,但是完全不符合个人快捷键的喜好,没办法,想要开发高效,自己动手配置吧.单单是配置这些开发环境就整整牺牲了小编一上午的时间,还好后期开发有明显的提速.中午吃

mysql 数据库数据迁移 The user specified as a definer ('root'@'%') does not exist 解决方法

从一个数据库数据迁移到本地localhost 程序在调用到数据库的视图时报错,直接在数据库中打开视图时也报错,类似: mysql 1449 : The user specified as a definer ('montor'@'%') does not exist 经查,是权限问题,解决办法: 运行:grant all privileges on *.* to [email protected]"%" identified by "."; 之后打开视图时便不会报错

centos下mysql数据迁移方法

第一种: 原始数据库不需要重新安装: 默认mysql会安装在/var/lib/mysql这里,若将数据迁移到/data/mysql目录下,步骤如下: 1.停止mysql服务 2.#cp /var/lib/mysql/* /data/mysql/ #chown -R mysql.mysql /data/mysql 3.修改my.cnf文件 basedir = /usr datadir = /data/mysql socket = /data/mysql/mysql.sock pid-file =