zoukankan      html  css  js  c++  java
  • java实现数据库之间批量插入数据

    package comnf147Package;
    
    import java.sql.*;
    
    public class DateMigrationLagou {
        
        //连接SQLite
        private Connection getSqlite() throws Exception {
            Class.forName("org.sqlite.JDBC");
            return DriverManager.getConnection("jdbc:sqlite:E:\data\lagou.db");
        }
    
        //连接MariaDB
        private Connection getMariaDb() throws Exception {
            Class.forName("com.mysql.jdbc.Driver");
            return DriverManager.getConnection("jdbc:mysql://localhost:3306/lagouDB?rewriteBatchedStatements=true", "root", "666666");
        }
    
        //释放资源
        private void release(Connection coon, Statement st, ResultSet rs) {
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (st != null) {
                try {
                    st.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (coon != null) {
                try {
                    coon.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    
        public void OperatingControl() {
    
            //从SQLite中取数据
            Connection SQliteConn = null;
            Statement SQliteSt = null;
            ResultSet SQliteRS = null;
    
            //添加到MaiiaDb
            Connection MariaDbConn = null;
            PreparedStatement MariaDbPs = null;
    
    
            try {
                //获取数据
                SQliteConn = this.getSqlite();
                SQliteSt = SQliteConn.createStatement();
                SQliteRS = SQliteSt.executeQuery("select * from lagou_position");
    
                //添加数据
                MariaDbConn = this.getMariaDb();
                MariaDbPs = MariaDbConn.prepareStatement("insert into lagou_position values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
    
                // 关闭事务自动提交 ,这一行必须加上,否则每插入一条数据会向log插入一条日志
                MariaDbConn.setAutoCommit(false);
    
                int i = 0;
                //计时开始
                long startime = System.currentTimeMillis();
                //设置批量处理的数量
    
                while (SQliteRS.next()) {
                    for (int j = 1; j < 20; j++) {
                        MariaDbPs.setObject(j, SQliteRS.getObject(j));
                    }
                    MariaDbPs.addBatch();
                    //把若干sql语句装载到一起,然后一次送到数据库执行,执行需要很短的时间
                    // 每 10000 条,向数据库发送一次执行请求
                    if (++i % 10000 == 0) {
                        MariaDbPs.executeBatch();
                    }
                }
                //执行批量处理语句;
                MariaDbPs.executeBatch();
                //// 提交事务
                MariaDbConn.commit();
    
                //结束时间
                long stoptime = System.currentTimeMillis();
                //输出结果
                System.out.println("总数据" + i);
                System.out.println("插入用时" + (stoptime - startime) / 1000.0 + " 秒 ");
            } catch (Exception e) {
                try {
                    if (MariaDbConn != null) {
                        MariaDbConn.rollback();
                    }
                } catch (SQLException e1) {
                }
            } finally {
                this.release(SQliteConn, SQliteSt, SQliteRS);
                this.release(MariaDbConn, MariaDbPs, null);
            }
        }
    
    }
        public static void main(String[] args) {
    
            //调用方式
            DateMigrationLagou dateMigrationLagou = new  DateMigrationLagou();
            dateMigrationLagou.OperatingControl();
        }
        
  • 相关阅读:
    Java中符号位扩展
    BZOJ2754: [SCOI2012]喵星球上的点名(AC自动机)
    BZOJ1030: [JSOI2007]文本生成器(AC自动机)
    BZOJ2434: [Noi2011]阿狸的打字机(AC自动机 树状数组)
    BZOJ1432: [ZJOI2009]Function(找规律)
    BZOJ2659: [Beijing wc2012]算不出的算式(数学)
    洛谷P3796 【模板】AC自动机(加强版)
    洛谷P3966 [TJOI2013]单词(AC自动机)
    BZOJ2580: [Usaco2012 Jan]Video Game(AC自动机)
    后缀自动机经典操作
  • 原文地址:https://www.cnblogs.com/nongzihong/p/9998979.html
Copyright © 2011-2022 走看看