作为一个后端开发者, 需要处理的问题会非常多非常杂,不断的接触各方面的知识,总结心得才能有所提高。
最近我们将甲方的信披系统改造后并入了我们的系统,开发基本完成,接下来数据迁移就是一个大问题了。因为之前其它开发商系统的数据库设计极烂,所以这次数据迁移稍微显得麻烦,而数据迁移最大的要求就是保证数据的正确性。
在此把这次迁移的方式记录下来,也希望以后有所提升之后能有更好的方案。
总体的方案上 是先把原库的表导入到我们库,然后写存储过程,对重构的字段做对应,然后导入到我们的新表之中,最后删除老的表。
原库的表导入我们库 我们在这里用到的是oracle的 exp imp命令
注意exp imp命令直接在dos下运行就行 不需要进入sqlplus
下面是exp命令和imp命令
Exp disinfo2/disinfo2@disinfo2 log=disinfo_emp.log file=C:\Users\hundsun\Desktop\cbs信披改造迁移数据\dmp\disinfo.dmp
tables =(TBL_INFO_DISCLOSUER_APPLY,TBL_DISCLOSUER_APPLY_FILE,TBL_FILE_PATH,TBL_FILE_INFO,TBL_INFO_DISCLOSUER_HANDLE_LOG,TBL_DISCLOSUER_LEAVENET_LOG,TBL_DIRECTIONAL_INVESTORS)
imp cfae_cbs/hundsun@1538CBS log=disinfo_imp.log file=C:\Users\hundsun\Desktop\cbs信披改造迁移数据\dmp\disinfo.dmp
tables =(TBL_INFO_DISCLOSUER_APPLY,TBL_DISCLOSUER_APPLY_FILE,TBL_FILE_PATH,TBL_FILE_INFO,TBL_INFO_DISCLOSUER_HANDLE_LOG,TBL_DISCLOSUER_LEAVENET_LOG,TBL_DIRECTIONAL_INVESTORS)
意思应该都明确易懂, 用户名/密码 连接 日志输出地址 需要导入或导出的表。 文件做成bat或sh直接运行就可以了 非常的方便快捷。
这样所有我需要的表都转移到我们自己的库里面。
下一步就是写存储过程,重构对应字段了。
下面是主表的迁移存储过程 关键的地方我添加了注释解释一下
create or replace procedure sp_disinfo_apply_insert
as
--原信披库申请表中存储了所有历史数据 先改造成之前版本进入历史表 所以进入申请表的数据只为版本号最高的数据
cursor cur_infordis_apply is --此处是游标 批量导入数据基本都需要用到 相当于把数据做成一个list 方便之后foreach的循环导入
select t.* f

940

被折叠的 条评论
为什么被折叠?



