赛迪网 > IT技术 Java > 技术动态
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

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

发布时间:2008.01.18 09:29     来源:赛迪网    作者:eclipse-EasyJF

受很多朋友的要求,在工作当中很时候要对数据库进行迁移,本人利用业余时间编写了一个迁移的实例,有这方面需要的朋友们可以借鉴和指正!
本例主要实现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、尽量避免数据的重复存放! 
          (责任编辑:包春林)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 设计模式--JDBMonitor的基本原理探究 (01-18) · Tomcat下JSP、Servlet和JavaBean的配置 (01-17)
· 在Java中实现UDP协议编程的方法 (01-15) · 使用缓冲IO提高性能 (01-15)
· 远程客户端相互通讯的实现 (01-15) · Java实现FTP服务器 (01-15)
· Java实现HTTP文件队列下载 (01-15) · 开发框架--在Tomcat下中文的彻底解决 (01-15)
· 信息时代如何才能成为一名优秀的程序员 (01-15) · 程序人生--一个3流学校程序员的奋斗 (01-15)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 信息化市场百家争鸣 SaaS深陷争议“泥潭”
· 提高管理水平 "两栖"CIO应具备的六大能力
· 国产ITIL运维先行者 四大厂商角力BI市场
· 金融行业GSN专题解决方案 企业网解决方案
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统