旧系统迁移新系统,数据库结构不同,求迁移策略

moondreamyou 2012-08-07 07:45:33
要求:旧系统数据全部迁移至新系统,达到如同新系统产生的数据一样

难点1:旧系统约400个表,新系统约300个表,数据表结构完全不一样,数据量大。
难点2:旧系统由于过去有BUG或其他原因,导致部分数据是不完整的,但新系统对该数据可能要求是必填的。
难点3:外键映射复杂,且在新系统中主键的数据类型可能不同(比如旧系统是数字,新系统是uniqueidentifier,甚至更复杂的情况)
难点4:客户要求新系统上线时旧系统下线,一上一下(客户要求无法变更)。
难点5:旧系统对外提供接口,该接口被其他系统所用。
难点6:割接数据肯定不是一两天完成,旧系统仍然每天产生新数据。
难点7:不确定的内容需要客户确认(比如旧系统某业务在新系统不适用),但客户不能及时给予答复。
难点8:待定的部分可能会影响数据迁移的进度。
难点9:附件数据迁移,文件服务器的文件也需要迁移,但新系统对某类型附件要求存的是.jpg,但旧系统目前存储的是rar。

第一次做数据割接,没什么经验,希望各位能结合其中的难点,谈谈数据迁移的策略,经验和技巧,也当是对自己的锻炼。
...全文
1483 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangchenpengsus 2012-08-17
  • 打赏
  • 举报
回复
我现在在杭州就是干的数据迁移工作,上述你所说的问我们都有遇到,整个系统都分为大的十几个模块,每个模块之间有相互联系,所以我们在迁移数据时要了解基本的业务、熟悉老系统的表结构、熟悉新系统的表结构,然后分析、整理、沟通、处理、生成迁移脚本、测试等等一系列的过程。。。,几千万的数据量现在已经处理有大半年了,有时候新系统还要兼容老数据,系统开发并不全是随心所欲、所谓的说法甲方。。。!
Mr_Nice 2012-08-10
  • 打赏
  • 举报
回复
其实LZ说的这些难点。感觉就3块

1、需求分析,旧系统有的,根据需求,看是否有需要删减,增加,调整的(最终,就是新系统更适合现在的状况)
【难点 5,6,7,8】

2、数据整合,原旧数据格式,存放位置等,对应新程序进行整合。
【难点 1,2,3,9】

3、新系统测试(所有设计环节的相应测试一定要到位)
【难点 4】

对应可能不准,不过思路大概就是这样。
moondreamyou 2012-08-10
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
给楼主一个解决难道3的方法:
[/Quote]
难点3还包括,对于关联外键值的插入,比如旧系统A表主键为id(int自增),在新系统被拆成A1,A2,A3表,A2,A3关联A1的自增aId主键,所以A1,A2,A3表需要同时插入,否则无法关联,但A2表中的一个A2Value1字段,却关联X表的一个自增字段,而X表又依赖于旧系统的N表,并且X表和N表的主键类型各自不同,而X表又关联K表。。。。
就是这样一种复杂的外键关联网,而且因为数据有不确定的情况,很难一步到位。
这样的问题不是简单的转化就能解决的。
moondreamyou 2012-08-10
  • 打赏
  • 举报
回复
现在我们在迁移方法基本上就是写脚本,为了关联外键需要一次同时插入多个表,并写了大量转化数据的函数,待确认字段留空。目前方案尚可进行,但效率不高,且存在巨大隐患。所以想听听有没有较好的方法。
Q315054403 2012-08-10
  • 打赏
  • 举报
回复
那只能对每个表写指令迁移数据。。开始在测试环境测试两三次
关键参照等,只能分清先后
Andy-W 2012-08-09
  • 打赏
  • 举报
回复
给楼主一个解决难道3的方法:
对于 主键int(bigint) to guid,在mssql中可以使用:
e.g.

Declare @x int
set @x=454
select convert(uniqueidentifier,convert(binary(16),@x)))


解决了难点3,其他问题好办。
haitao 2012-08-08
  • 打赏
  • 举报
回复
写一个专门的迁移转换系统。。。。。
gogodiy 2012-08-08
  • 打赏
  • 举报
回复
这么多需求?我的建议就是,先备份,然后对原来的数据库进行修改,达到迁移要求后再进行迁移工作。
唐诗三百首 2012-08-08
  • 打赏
  • 举报
回复
没有捷径,只能手工一个一个表的迁移数据..

  • 打赏
  • 举报
回复
我也想知道解决方案
zjl8008 2012-08-08
  • 打赏
  • 举报
回复
链接服务器,然后手工编写 insert语句,把旧数据插入到新数据库中去。
moondreamyou 2012-08-08
  • 打赏
  • 举报
回复
旧系统有些实体,按字段业务类型被分成到多个表,通过外键关联,在新系统中也是这样,多对多的这种映射关系,SISI好像不支持吧。关键是如何重新建立外键映射是难点。
KevinLiu 2012-08-08
  • 打赏
  • 举报
回复
没有捷径,只能先将所有表的对应关系整理好,然后可以用Linked server或者SSIS将数据导入。
shshjun 2012-08-08
  • 打赏
  • 举报
回复
建议使用两个SSIS包,一个做整体切换,另一个定期不定期做切换后的新数据转移.
当然要对每个表进行实际分析了.
筱筱澄 2012-08-07
  • 打赏
  • 举报
回复
给客户重新改版,那你们就得要重新的教他们怎么用

着重说你们新版的优点,说服他们了 其他好办

关键还是很多数据不能给搞丢了
筱筱澄 2012-08-07
  • 打赏
  • 举报
回复
你这也就是把还需要的数据迁移过去。

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧