JDBC远程从一个MySql数据库中的一张表里面读出数据(这个数据库需要用SSH隧道连接,大约8W条数据),然后分别插入到另一个数据库中的两张表里

package com.eeepay.lzj.db;



import java.sql.Connection;

import java.sql.Date;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;



import com.jcraft.jsch.JSch;

import com.jcraft.jsch.Session;





public class ChangeDB {

	

	public static int lport = 33102;//本地端口(随便取)  

    public static String rhost = "172.***.***.***";//远程MySQL服务器  

    public static int rport = 3306;//远程MySQL服务端口

    

    

	public static void go() {

		String user = "***";//SSH连接用户名

		String password = "******";//SSH连接密码

		String host = "120.132.***.***";//SSH服务器

		int port = *****;//SSH访问端口

		try {

			JSch jsch = new JSch();

			Session session = jsch.getSession(user, host, port);

			session.setPassword(password);

			session.setConfig("StrictHostKeyChecking", "no");

			session.connect();

			System.out.println(session.getServerVersion());//这里打印SSH服务器版本信息

			int assinged_port = session.setPortForwardingL(lport, rhost, rport);

			System.out.println("localhost:" + assinged_port + " -> " + rhost + ":" + rport);

		} catch (Exception e) {

			e.printStackTrace();

		}

	}

	

	

	

	public static void main(String[] args) {

		String mobileNo;//mobile_username

	    String accountName;//account_name

	    String accountNo;//account_no

	    String cnaps;//cnaps_no

	    String bankName;//bank_name

	    

	    String realName;//lawyer

	    int status;//open_status

	    String password;//mobile_password

	    String idCard;//id_card_no

	    int realNameAuth;//real_flag

	    Date createTime;

		go();

		try {

            //1、加载驱动

            Class.forName("com.mysql.jdbc.Driver");

        } catch (ClassNotFoundException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

        //2、创建连接

        Connection conn = null;

        Connection conn2 = null;

         try {

        	conn = DriverManager.getConnection("jdbc:mysql://localhost:33102/posp", "****", "***");

        	conn2 = DriverManager.getConnection("jdbc:mysql://115.29.***.***:3306/bag", "****", "*****");

        } catch (SQLException e) {

            System.out.println("未连接上数据库");

            e.printStackTrace();

        }

        PreparedStatement pstmt = null;

        PreparedStatement pstmt2 = null;

        PreparedStatement pstmt22 = null;

        PreparedStatement pstmt3 = null;

        try {

            String sql = "select mobile_username,account_name,account_no,cnaps_no,bank_name,lawyer,open_status,mobile_password,id_card_no,real_flag,create_time from pos_merchant";

        	//String sql = "select * from settle_account where id=1";

            String sql2 = "insert into bag_login(mobile_no,status,real_name,create_time,password,pay_password,idcard,real_name_auth) values(?,?,?,?,?,?,?,?)";

            String sql22 = "select * from bag_login where mobile_no=?";

            String sql3 = "insert into settle_account(mobile_no,account_name,account_no,cnaps,bank_name,create_time) values(?,?,?,?,?,?)";

            pstmt = conn.prepareStatement(sql);

            pstmt2 = conn2.prepareStatement(sql2);

            pstmt22 = conn2.prepareStatement(sql22);

            pstmt3 = conn2.prepareStatement(sql3);

            ResultSet rs = pstmt.executeQuery();

            int i=1;

            while(rs.next()){

            	System.out.println(i++);

            	createTime = rs.getDate("create_time");

            	mobileNo = rs.getString("mobile_username");

            	accountName = rs.getString("account_name");

            	accountNo = rs.getString("account_no");

            	cnaps = rs.getString("cnaps_no");

            	bankName = rs.getString("bank_name");

            	realName = rs.getString("lawyer");

            	status = rs.getInt("open_status");

            	password = rs.getString("mobile_password");

            	idCard = rs.getString("id_card_no");

            	realNameAuth = rs.getInt("real_flag");

            	pstmt3.setString(1, mobileNo);

            	pstmt3.setString(2, accountName);

            	pstmt3.setString(3, accountNo);

            	pstmt3.setString(4, cnaps);

            	pstmt3.setString(5, bankName);

            	pstmt3.setDate(6, createTime);

            	pstmt3.execute();

            	

            	pstmt22.setString(1, mobileNo);

            	if(!pstmt22.execute()){

            		pstmt2.setString(1, mobileNo);

                	pstmt2.setInt(2, status);

                	pstmt2.setString(3, realName);

                	pstmt2.setDate(4, createTime);

                	pstmt2.setString(5, password);

                	pstmt2.setString(6, password);

                	pstmt2.setString(7, idCard);

                	pstmt2.setInt(8, realNameAuth);

                	pstmt2.execute();

            	}

            	

            }

             

        } catch (SQLException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } finally{

             try {

                    pstmt.close();

                    conn.close();

                    pstmt2.close();

                    conn2.close();

                    pstmt3.close();

                     

                } catch (SQLException e) {

                    // TODO Auto-generated catch block

                    e.printStackTrace();

                }

        }



	}



}

  

你可能感兴趣的:(mysql)