系统整合过程中需要将现有的人员定位数据库(SqlServer2000)中的监测和考勤数据迁移到统一的数据库Oracle,不仅要将已经存在的数据迁移,还要考虑将现有系统运行过程中不断更新的数据也提取到Oracle中。着实让人头大,自己本身也没有什么经验!从网上找些资料,静态数据库迁移,即不考虑数据更新的方法还是有的,不管是SqlServer还是Oracle本身也提供的移植工具!但是对于动态更新的数据就没有办法了!只能自己编程实现了!
考虑技术方案包括以下方面内容:
1.读取现有SqlServer数据库的Schema,包括表名,字段名,字段类型,字段长度,是否允许为空,约束,主键,外键等
2.在Oracle数据库中建立表
3.读取Sqlserver中表的记录,逐条写入Oracle
4.动态更新阶段根据时间字段读取更新的值
涉及的技术和需要思考的问题:
1.多线程技术,目前的Sqlserver数据库已经有1G左右,部分单张表的记录条数过万,所以必须考虑执行的时间
2.Sqlserver数据类型到Oracle数据类型的转换
3.移植过程只简单的对表进行移植还是处理后(对某些表进行联合查询形成新的记录表)移植?
初步实现了读取Schema,表创建的程序,应用的多线程技术:
测试条件:本地SqlServer2008,局域网Oracle11g服务器,本地Oracle客户端。
http://www.pudn.com/downloads473/sourcecode/windows/csharp/detail1979615.html