首页 > 解决方案 > 从一个 MySQL 数据库表中选择并使用 Java 在另一个数据库表中批量插入 || 批量插入不起作用

问题描述

这批插入不起作用(慢),如果我放在循环ps1.executeBatch();之外while,在这种情况下,批次正在工作,但只插入最后一条记录。

public static void insert(){
        try{
            //for 1st DB
            Class.forName("com.mysql.jdbc.Driver");
            Connection con =DriverManager.getConnection("", "", "");

            // for 2nd DB
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection con2 = DriverManager.getConnection("", "", "");

            con.setAutoCommit(false);
            con2.setAutoCommit(false);
            PreparedStatement ps1 = con.prepareStatement("INSERT INTO table2 (data) VALUES(?)");

            PreparedStatement ps = con2.prepareStatement("SELECT * FROM table1");
            ResultSet rs = ps.executeQuery();

            while(rs.next()){
                x++;
                System.out.println(x + " Inserted");
                
                ps1.setInt(1,rs.getString("data"));

                ps1.addBatch();
                ps1.executeBatch();
            }
            con.commit();
            con2.commit();

        }catch (Exception e){
            e.printStackTrace();
        }
    }


标签: javamysqlsql-insert

解决方案


推荐阅读