服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

数据库相关:实现不同数据库之间的迁移

受很多朋友的要求,在工作当中很时候要对数据库进行迁移,本人利用业余时间编写了一个迁移的实例,有这方面需要的朋友们可以借鉴和指正!
本例主要实现oracle向access的迁移,综合运用java jdbc驱动以及jdbc-odbc桥分别连接oracle数据库管理系统和access数据库,其他的数据迁移也是一样,只不过修改一下连接方式而已!本例中将oracle中获取的数据,直接插到access对应的数据表中,注意迁移时要保持两个数据库之间表结构的一致性。
oracle中原始数据和移植到access数据库对应的数据表中的有关数据如图:
  idname         departmeny       salary
--------------------------------------------
  1 eclipse         技术部              2500
  2 大峡             开发部              3000
  3 天一             技术部              5000
  4 船长             开发部              4000
,主要就是新建一个类datapass,由于本例要使用连接oracle用的jdbc包,首先要导入对应的oracle jdbc,以下是datapass.java的代码:
package datamanage;

import java.sql.connection;
import java.sql.drivermanager;
import java.sql.preparedstatement;
import java.sql.resultset;
import java.sql.statement;

public class datapass {

   public static void main(string[] args) {
       string servername = "localhost";
       try
       {
           class.forname("oracle.jdbc.driver.oracledriver");            
           string url  = "jdbc:oracle:thin:@"+servername+":1521:eclipsedb";
           connection connoracle  = drivermanager.getconnection(url,"eclipse","888888");  //连接源数据源
           statement stmt = connoracle.createstatement();
           resultset rs   = stmt.executequery("select * from employee");
           class.forname("sun.jdbc.odbc.jdbcodbcdriver");    
           connection connaccess = drivermanager.getconnection("jdbc:odbc:target","","");  //连接目标数据源
           preparedstatement pstmt = connaccess.preparestatement("insert into employee(id,name,department,salary) values(?,?,?,?)");
              //循环装入数据
           while(rs.next()) {               
                 pstmt.setint(1,rs.getint("id"));
                 pstmt.setstring(2,rs.getstring("name"));
                 pstmt.setstring(3,rs.getstring("department"));    
                 pstmt.setdouble(4,rs.getdouble("salary"));    
                 pstmt.executeupdate();
            }
           //释放资源
           rs.close();
           stmt.close();
           pstmt.close();
           connoracle.close();
           connaccess.close();
       }catch(exception e){
                e.printstacktrace();
       }
   }
}

本例中主要要注意以下:
1、使用不同的数据库连接方式,注意前期数据配置和外部包的导入;
2、注意资源的释放,以确定完整地保存插入的数据;
要遵循的原则:
1、完整的记录相关的数据信息;
2、按照数据的不同类别分别存放在不同的数据表中;
3、建立表与表之间的关系,确定相关的字段;
4、尽量避免数据的重复存放!