下载AS400 里面的DB 并且插入到ORACLE 中

package com.ibm.db;

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
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.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import oracle.jdbc.driver.OracleDriver;

public class InsertAS400RecordToOracle {

public static void main(String[] args) {
	ResultSet rs = getRecordFromAS400(args[0]);                   // get record from AS400
	try {
		while (rs.next()) {
			List<Map<String, String>> list = convertList(rs);
			ResultSetMetaData md = rs.getMetaData();//获取键名
			int columnCount = md.getColumnCount();//获取行的数量
			insertRecordIntoOracle(args[0], columnCount, list);        // insert record to oracle
		}
	} catch (SQLException e) {
		e.printStackTrace();
	}
	
}


private static ResultSet getRecordFromAS400(String tableName) {
	String SqlStmt = "SELECT * FROM " + tableName;
	Connection dbConnect = null;
	Statement stmt = null;
	ResultSet rs = null;
	try {
		
		Class.forName("com.ibm.as400.access.AS400JDBCDriver");
		String url = "jdbc:as400://192.188.4.173/XXX;naming=system;errors=full";
		String user = "XXX";
		String pwd  = "XXX";
		dbConnect = java.sql.DriverManager.getConnection(url, user, pwd);
		stmt = dbConnect.createStatement();
		rs = stmt.executeQuery(SqlStmt);
	} catch (Exception exc) {
		exc.printStackTrace();
	} finally {
	}
	return rs;
}

private static ResultSet insertRecordIntoOracle(String tableName, int columnCount, List<Map<String, String>> list) {
	Connection connect = null;
	Statement stmt = null;
	ResultSet rs = null;
	PreparedStatement ps;
	StringBuffer sb = new StringBuffer();
	sb.append(" VALUES (");
	for(int i = 1; i <= columnCount; i++) {
		if(i < columnCount) {
			sb.append(" ?,");
		}else {
			sb.append(" ?)");
		}
	}
	
	String sqlstr = "insert into " + tableName + sb.toString();
	try {
		Driver driver = new OracleDriver();
		DriverManager.deregisterDriver(driver);
		Properties pro = new Properties();
		pro.put("user", "XXX");
		pro.put("password", "XXX");
		connect = driver.connect("jdbc:oracle:thin:@192.168.6.136:1521/ORCL", pro);
		ps = connect.prepareStatement(sqlstr);

        for(int j = 0; j < list.size(); j++) {
        	
        	Iterator<?> iter = list.get(j).entrySet().iterator(); 
        	int i = 1;
        	while (iter.hasNext()) { 
        	    Map.Entry entry = (Map.Entry) iter.next(); 
        	    Object key = entry.getKey(); 
        	    Object val = entry.getValue(); 
        	    ps.setString(i, val.toString());
        	    i++;
        	}
        	ps.executeUpdate();
        }

        System.out.println("jjk插入完毕!!!");
	} catch (Exception exc) {
		exc.printStackTrace();
	} finally {
		try {
			if (stmt != null)
				stmt.close();
				connect.close();
			if (connect != null)
				connect.close();
		} catch (Exception exc) {
		}
	}
	return rs;
}


public static List<Map<String, String>> convertList(ResultSet rs) throws SQLException{
	List<Map<String, String>> list = new ArrayList<Map<String, String>>();
	ResultSetMetaData md = rs.getMetaData();//获取键名
	int columnCount = md.getColumnCount();//获取行的数量
	while (rs.next()) {
		Map<String, String> rowData = new HashMap<String, String>();//声明Map
		for (int i = 1; i <= columnCount; i++) {
			rowData.put(md.getColumnName(i), rs.getObject(i).toString());//获取键名及值
		}
		list.add(rowData);
	}
	return list;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值