本例主要实现Oracle向Access的迁移,综合运用Java JDBC驱动以及JDBC-ODBC桥分别连接Oracle数据库管理系统和Access数据库,其他的数据迁移也是一样,只不过修改一下连接方式而已!本例中将Oracle中获取的数据,直接插到Access对应的数据表中,注意迁移时要保持两个数据库之间表结构的一致性。
Oracle中原始数据和移植到Access数据库对应的数据表中的有关数据如图:
| ID |
NAME |
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、尽量避免数据的重复存放!
【相关文章】