将原SQLServer2000中的几个表的数据导入到同结构的Orcale10g中,原本的做法是将SQLServer2000中的数据导出成Excel文件或者是csv文件或者是xml文件,然后利用Orcale到导入工具进行导入,但是这样的做法比较庸俗,而且,若存在其它类型数据,比如说,SQLServer的datetime,二进制类型数据就导入不进去Orcale的date和blob类型中。为了解决这些问题,我采用java语言的数据对象持久化技术,进行相关的解决。
首先,利用java将SQLServer2000中的需要导出的表的数据生成数据对象持久文件.obj,然后,再利用java将其读取解析生成数据对象,最后,把数据对象赋给JDBC中的PreparedStatement对象的setObject方法中,利用jdbc将数据insert到Oracle中。
生成.obj文件的注意事项。
在读取数据库数据的时候,如果,数据量比较大的时候,采用多个文件来持久数据表数据。否则,在生成文件的时候,会抛出java.lang.OutOfMemoryError 内存溢出的异常。据我简单测试,如果文件大小超过10M时,这个异常就会抛出的,我采用文件分割来进行数据存储。就是在生成文件大于5M时,(目前,我采用5M,没有发现内存溢出异常)就自动分割成几个文件来存数据。