java - 从一个 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();
}
}
解决方案
推荐阅读
- oracle - 在 Oracle 中为批处理创建分类变量
- mysql - 获取两个日期之间上午 9 点至下午 5 点之间的时间
- python-3.x - 如何在 nameko rpc 中通信二进制数据?
- python - 如何使用python转置csv文件中的数据
- oauth - 如何使用 Github Oauth(使用 Passport.js)分别获取名字和姓氏?
- javascript - 如果从不运行为什么会这样
- angular - 使用不同的 updateOn 选项为同一字段定义多个验证器
- javascript - 为什么对象要重写另一个冻结的对象
- linux - 使用系统调用在程序集中保存 DNS 响应
- powershell - 获取最近 24 小时内创建的 Azure/Msol 用户。或今天