简介
最近在项目中,已经到了尾期,准备给客户换上最新的系统,这时客户却要求以前的测试数据他们还要,
要保留下来。这可不是个好消息,最新的系统表字段已经有很大的变动了,更为重要的是有的设计模式都已经更改
,某些字段所储存的数据不是单纯数据而是要综合解析的数据了。为了减少工作量,做个小工具出来迁移数据,本
人对于数据存储过存不是很熟,再说不同数据库的写法也不一样,就不用存储过程了,用swing来写一个。工具的
功能不用太智能了,只要简单就行,如果要智能的话,那个工作量不比我手工来改数据的量少。
需求
给出老数据库的sql文件,导入到新表中
思路
因为要在短时间做出个小工具来,那么功能就不要太复杂。再说很多的更改项还是要人动的去确认的。这
样,功能的要求就出来了,对于老表和新表对照,多了字段的就删除,少了字段的就加入,给出默认值就行了。这
对于大量数据来说就已经是很简化了。
想出了两种做法
1.对sql文件进行处理,sql文件是用工具导出的,则他们的格式是固定的。分析sql的写法,进行解析,
用户给出第几列要删除,在哪一列要增加,增加的默认值是null,'',0 三种的哪一个。运行程序后会生成新的sql
文件,再导入到新表中就ok了。优点是对于sql文件处理就行。缺点,每次只能处理一张表,否则会出错,这样的
话sql文件如果是整个数据库文件就要将文件内容先拆分成单表的,再进行处理。由于是文件解析,则对于sql语句
中是否有null,值的要十分注意,很容易解析文件错误。
2.将sql文件生成数据表,通过代码jdbc取出旧数据库与新数据库的差别,多字段的删,少字段的加。优
点:不需要对文件进行解析,不容易出错,直接生成新表数据。缺点:要十分注意增加的字段,如果是多表一起操
作,则很难控制到哪个表要增加的默认值是什么。而且这种方法需要数据库的支持。
处理
因为我这老数据量不是非常的大,那我就选择了第一种方案,处理sql文件的,每次从老数据库中只导出
一张表,处理时先检查数据内容,基本没有什么null值的。处理完后再来第二张。基本上一个下午就搞定了