前两个月接了一个公安局的项目,这段时间终于接近尾声了,程序也基本没什么问题了。但数据迁移的需求摆到了我的面前,因为目前他们正在使用一套基于Oracle的C/S系统,这套系统里面有到目前为止所有的人员和案件信息,他们不想重新录入,所以需要从Oracle中迁移到目前的SQL Server中。
1.我先在本机安装了一个高版本的Oracle数据库(9i),测试熟悉了一下,学习了一下数据的导入导出等等功能,然后从服务器上将现有的数据库导出并Download下来,在本地数据库中建立相同的用户,导入进本地数据库。
2.由于Oracle转到SQL Server比较麻烦,所以我使用了现成的工具Full Convert Enterprise软件,很方便的将Oracle数据转移到了SQl Server,只有一条数据出现了错误,这点错误可以忽略不计。
3.转移过来之后,查看数据库,发现绝大部分的字段都是varchar类型,就是因为都是这种类型带来了一些问题,比如日期,竟然有1940-04-00,晕死了,怪不得总是出现smalldatetime转换溢出,日起非法的问题,可以使用IsDate函数来检查一下,正确返回1,非法返回0
4.原系统设计中最大的问题就是,犯罪人员可以重复添加进去,导致不同的案件相同的人员却有多个人员记录,冗余大。这还不算,身份证和出生日期可以为空,就更麻烦了,根本无法识别哪些是同一人员,对于迁移到新系统中来说很麻烦,没办法,只能修改原系统的数据库结构,将唯一性去掉。
5.原系统中还有几点不好的地方就是,专门有一个表用来存放词典,而且比较大,几万条,案别,类别,省市区等等都放进去,最让我痛恨的是他省市区不是分开的,而且放在一起的,比如江苏南京,南京江宁,南京鼓楼,光这样都三条了,不大家可以推一下全国会出现多少条,不仅如此,他还没有分割称号,比如省、市、区、县、自治区等等。都没有,有的话还可以切分。新系统使用的省市区是分离的,所以我暂时没想到好的办法解决,就把原系统中的省市区加到了新系统的详细地址里面去了。