我要做的事情是:把位于IP1机器上的数据库1表A中的数据,拷贝到IP2机器上的数据库2的表B中,表A和表B的结构是完全一样的,表A中大约4700条数据,每条数据有100项,要求效率比较高;
我是在Spring框架下做的,基本上分两步:第一步,利用JDBC查询出表A中的数据,并转换成对象Obj,放入List中;第二步,利用JDBC PreparedStatement,循环遍历List,生成insert语句,加入PreparedStatement的batch,然后一起执行。结果第一步花费3.5秒,第二部插入只花费1.5秒;
现在感觉第二部插入4000条数据花1.5秒已经可以了,但是第一步查询花费的时间比插入还多,主要是花费在对象的转换上了(即过程是JDBC ResultSet-->List(Obj)-->PreparedStatement insert,转换过程花费的时间长)。如果是直接操作ResultSet生成插入的sql语句,再批量执行,就节省下转换的时间了。但是ResultSet不能当做结果传递,传出函数就关闭了,再操作就提示对已关闭的ResultSet操作),这就要求把查询的函数嵌入到PreparedStatement函数中,但是我是利用的JdbcDaoSupport,插入都是在内部类中完成的,如何实现我上面说的目的呢?有没有遇到过同样情况的兄弟呢?