Oracle中得blob字段导入到DB2的Blob字段
来源:互联网 发布:网络工程师不是程序员 编辑:程序博客网 时间:2024/05/22 07:02
1.背景
在项目中使用blob大字段来存储报文,最近有客户需要使用DB2数据库来部署应用,所有只得把oracle中初始化脚本导入到DB2中,在制作DB2的初始化脚本
2.问题
怎么样把oracle中得含blob字段的表导入到DB2中呢,在网上转了一下没有发现,决定写程序解决
3.解决问题
使用JDBC连接先查出oracle中得表,然后插入到DB2中。先新建java project,然后添加oracle和DB2的驱动包,如下图:
DB2ConnectionFactory源码为:
package com.ylink.export;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class DB2ConnectionFactory {final static String DRIVER = "com.ibm.db2.jcc.DB2Driver";final static String CONSTR = "jdbc:db2://172.168.6.212:50000/tps";final static String USERNAME = "db2admin";final static String USERPASS = "db2admin";/** * 获得数据库连接 * @return */public static Connection getConnection(){Connection con = null;try {Class.forName(DRIVER);con = DriverManager.getConnection(CONSTR,USERNAME,USERPASS);con.setAutoCommit(false); //设置不自动提交事务}catch (SQLException e) {System.out.println("sql语句错误"+e.getMessage());} catch (ClassNotFoundException e) {System.out.println(e.getMessage());}return con;}}IOperationCore接口源码为:
/** * 数据库常用操作封装 */package com.ylink.export;import java.lang.reflect.InvocationTargetException;import java.sql.ResultSet;import java.sql.SQLException;import java.util.List;/** 类名:IOperationCore<br> * * 作用: 该接口封装了数据库操作的大部分方法<br> * */public interface IOperationCore { /** sql更新语句 * * @param queryString 查询语句 * @return 返回一个<code>ResultSet</code>结果集 * * @exception SQLException */ ResultSet executeQuery(String queryString) throws SQLException; /** * sql更新语句 * * @param updateString 数据库更新语句 * @return 更新数据库影响行数 * * @exception SQLException */ int executeUpdate(String updateString) throws SQLException; @SuppressWarnings("unchecked")public <T> List<T> queryForList(String sql, Class<T> clazz,Object... params)throws SQLException, InstantiationException,IllegalAccessException, InvocationTargetException,ClassNotFoundException; /** * 释放系统连接资源 * * @exception SQLException 如果关闭失败将抛出<code>SQLException</code>*/ void dispose() throws SQLException;}
OperationCoreImpl源码为:
package com.ylink.export;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.List;/** * 类名:OperationCoreImplements<br> * * 作用: 该类实现IOperationCore接口的所有方法<br> */public class OperationCoreImpl implements IOperationCore {protected Connection aConnection = null;protected Statement ps = null;protected ResultSet rs = null;protected ResultSetMetaData rsmd = null;protected static OperationCoreImpl m_instance = null;/** * Singleton 即单例(态)模式,用来生成对象唯一实例的方法 * * @return OperationCoreImplements的一个实例 * @throws Exception */public static OperationCoreImpl createFactory() throws Exception {if (m_instance == null)m_instance = new OperationCoreImpl();return m_instance;}/** @exception Exception */public OperationCoreImpl() throws Exception {init();}private void init() throws Exception {aConnection = OracleConnectionFactory.getConnection();}/** * 释放系统连接资源 */public void dispose() {try {if (rs != null)rs.close();} catch (SQLException e) {e.printStackTrace();}try {if (ps != null)ps.close();} catch (SQLException e) {e.printStackTrace();}try {if (aConnection != null)aConnection.close();} catch (SQLException e) {e.printStackTrace();}}/** * 返回ResultSet对象 * * @param queryString * 查询语句 * @return 返回一个<code>ResultSet</code>结果集 * * @exception SQLException */public ResultSet executeQuery(String queryString) {try {ps = aConnection.createStatement();rs = ps.executeQuery(queryString);} catch (SQLException e) {rs = null;e.printStackTrace();}return rs;}//返回list通用 JDBC直连@SuppressWarnings("unchecked")public <T> List<T> queryForList(String sql, Class<T> clazz,Object... params) throws SQLException, InstantiationException,IllegalAccessException, InvocationTargetException,ClassNotFoundException {if (clazz == null) {throw new IllegalArgumentException("clazz is null");}ResultSet rs = null;PreparedStatement ps = null;try {List<T> resultList = new ArrayList<T>();ps = aConnection.prepareStatement(sql);if (params != null) {for (int i = 0; i < params.length; i++) {ps.setObject(i + 1, params[i]);}}rs = ps.executeQuery();T t = null;Method[] allMethod = clazz.getMethods();List<Method> setterMethodList = new ArrayList<Method>();for (Method m : allMethod) {if (m.getName().startsWith("set")) {setterMethodList.add(m);}}String columnName = null;Class parameterType = null;if (rs != null) {while (rs.next()) {t = clazz.newInstance();for (Method m : setterMethodList) {columnName = m.getName().substring(3, 4).toLowerCase()+ m.getName().substring(4, m.getName().length());parameterType = m.getParameterTypes()[0];if (parameterType.isPrimitive()) {if (parameterType == Boolean.TYPE) {m.invoke(t, rs.getBoolean(columnName));} else if (parameterType == Byte.TYPE) {m.invoke(t, rs.getByte(columnName));} else if (parameterType == Short.TYPE) {m.invoke(t, rs.getShort(columnName));} else if (parameterType == Character.TYPE) {m.invoke(t, rs.getString(columnName).charAt(0));} else if (parameterType == Integer.TYPE) {m.invoke(t, rs.getInt(columnName));} else if (parameterType == Long.TYPE) {m.invoke(t, rs.getLong(columnName));} else if (parameterType == Float.TYPE) {m.invoke(t, rs.getFloat(columnName));} else if (parameterType == Double.TYPE) {m.invoke(t, rs.getDouble(columnName));}} else {m.invoke(t, rs.getObject(columnName));}}resultList.add(t);}}return resultList;} finally {dispose();}}/** * 增、删、改操作 * * @param updateString * 数据库更新语句 * @return 更新数据库影响行数 * * @exception SQLException */public int executeUpdate(String updateString) {int effectedRows = 0;try {aConnection.setAutoCommit(false);ps = aConnection.createStatement();effectedRows = ps.executeUpdate(updateString);aConnection.commit();} catch (SQLException ex) {System.out.println("数据库写操作失败!");if (aConnection != null) {try {aConnection.rollback();System.out.println("JDBC事务回滚成功");} catch (SQLException e) {System.out.println("JDBC事务回滚失败");e.printStackTrace();}}}return effectedRows;}}
OracleConnectionFactory源码为:
package com.ylink.export;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class OracleConnectionFactory {final static String DRIVER = "oracle.jdbc.driver.OracleDriver";final static String CONSTR = "jdbc:oracle:thin:@172.168.9.70:1521:tps";final static String USERNAME = "tps";final static String USERPASS = "tps";/** * 获得数据库连接 * @return */public static Connection getConnection(){Connection con = null;try {Class.forName(DRIVER);con = DriverManager.getConnection(CONSTR,USERNAME,USERPASS);con.setAutoCommit(false); //设置不自动提交事务}catch (SQLException e) {System.out.println("sql语句错误"+e.getMessage());} catch (ClassNotFoundException e) {System.out.println(e.getMessage());}return con;}}
运行export即可把oracle的表中数据导入到DB2中
- Oracle中得blob字段导入到DB2的Blob字段
- Oracle中得blob字段导入到DB2的Blob字段
- DB2中BLOB字段的处理
- DB2中关于Blob字段的说明
- oracle中读写blob字段的问题
- Oracle中BLOB字段的操作
- ORACLE中BLOB字段查询的方法
- Oracle数据库中BLOB字段的介绍
- ORACLE中BLOB字段查询的方法
- blob字段的Hibernate处理(DB2,Oracle)
- mysql blob字段导入
- Mybatis处理DB2中Blob类型字段的一种方法
- oracle中导出和导入部分blob,clob字段
- 导入文件到mysql blob字段
- oracle 往blob字段导入文件
- 解决sqoop1.4.4无法导入oracle的blob字段到hbase的问题
- fileupload上传文件存储到oracle Blob字段中
- c++写入oracle数据库blob字段,读取blob到本地文件
- HTML5与搜索引擎优化
- 设计模式之代理模式
- Ubuntu 10.04配置Apache+PHP+MySQL
- Android自动测试之Monkey工具
- ContentType--Http传输中经常看到的参数,从百度上摘的
- Oracle中得blob字段导入到DB2的Blob字段
- android RelativeLayout属性及demo
- Mysql-mmm安装配置文档
- C#中定义可拖动的曲线控件(支持Gamma曲线)
- 在代码中使用 _declspec(dllimport) 和 _declspec(dllexport)
- dom4操纵数据库中的数据生成xml
- Android入门第八篇之GridView(九宫图)
- (ZT)WideCharToMultiByte和MultiByteToWideChar函数的用法
- ffmpeg的IO操作