JNBusiness/ruoyi-admin/src/main/java/com/ruoyi/web/utils/batchInsert.java

119 lines
3.4 KiB
Java
Raw Normal View History

2024-03-11 12:59:39 +08:00
/*
2024-02-29 12:41:52 +08:00
package com.ruoyi.web.Utils;
import com.ruoyi.system.domain.cost;
import com.ruoyi.system.domain.material;
import javax.swing.*;
import java.sql.*;
import java.util.List;
public class batchInsert extends JFrame {
public static Connection conn;
public static Statement stm;
public static PreparedStatement stmt;
public static ResultSet rs;
2024-03-11 12:59:39 +08:00
*/
/**
2024-02-29 12:41:52 +08:00
* 对数据库进行批量插入数据操作 执行次数100万
2024-03-11 12:59:39 +08:00
*//*
2024-02-29 12:41:52 +08:00
public static void insertMaterialBatch(List<material> list) throws Exception {
// 思路将100万条数据分成n等份1等份为1000条数据
// 如何实现?
// 1、必须将Connection接口的自动提交方式改为手动
// 2、利用Statement接口中的如下三个方法addBatch、clearBath、executeBatch
conn = DataDBUtils.getConnection();
conn.setAutoCommit(false);
2024-03-11 12:59:39 +08:00
*/
/*stmt = conn.prepareStatement(
"insert into [dbo].[sapcontract_test](uid,bh,type,custom,salesman,project,htje,startdate,enddate,remark,htzt) values (?,?,?,?,?,?,?,?,?,?,?)");*//*
2024-02-29 12:41:52 +08:00
stmt = conn.prepareStatement(
2024-03-04 15:51:13 +08:00
"insert into c_material(material_id, material_xingh, material_guig, material_diany, material_dw,material_type_id) values (?,?,?,?,?,?)");
2024-02-29 12:41:52 +08:00
int count = 0;
System.err.println("Start");
for (material pay : list) {
count++;
stmt.setInt(1, pay.getMaterial_id());
stmt.setString(2, pay.getMaterial_xingh());
stmt.setString(3, pay.getMaterial_guig());
stmt.setString(4, pay.getMaterial_diany());
stmt.setString(5, pay.getMaterial_dw());
2024-03-04 15:51:13 +08:00
stmt.setString(6, pay.getMaterial_type_id());
2024-02-29 12:41:52 +08:00
stmt.addBatch();
if (count % 5000 == 0) {// 当增加了500个批处理的时候再提交
stmt.executeBatch();// 执行批处理
conn.commit();
}
}
stmt.executeBatch();// 执行批处理
conn.commit();
close(); // 关闭资源
}
2024-03-11 12:59:39 +08:00
*/
/**
2024-02-29 12:41:52 +08:00
* 对数据库进行批量插入数据操作 执行次数100万
2024-03-11 12:59:39 +08:00
*//*
2024-02-29 12:41:52 +08:00
public static void insertCostBatch(List<cost> list) throws Exception {
// 思路将100万条数据分成n等份1等份为1000条数据
// 如何实现?
// 1、必须将Connection接口的自动提交方式改为手动
// 2、利用Statement接口中的如下三个方法addBatch、clearBath、executeBatch
conn = DataDBUtils.getConnection();
conn.setAutoCommit(false);
2024-03-11 12:59:39 +08:00
*/
/*stmt = conn.prepareStatement(
"insert into [dbo].[sapcontract_test](uid,bh,type,custom,salesman,project,htje,startdate,enddate,remark,htzt) values (?,?,?,?,?,?,?,?,?,?,?)");*//*
2024-02-29 12:41:52 +08:00
stmt = conn.prepareStatement(
"insert into c_material_cost(cost_id, cost_material_id, cost_cl_id, cost_cl_qty, cost_cl_qty_2) values (?,?,?,?,?)");
int count = 0;
System.err.println("Start");
for (cost pay : list) {
count++;
stmt.setInt(1, pay.getCost_id());
stmt.setInt(2, pay.getCost_material_id());
stmt.setString(3, pay.getCost_cl_id());
stmt.setString(4, pay.getCost_cl_qty());
stmt.setString(5, pay.getCost_cl_qty_2());
stmt.addBatch();
if (count % 5000 == 0) {// 当增加了500个批处理的时候再提交
stmt.executeBatch();// 执行批处理
conn.commit();
}
}
stmt.executeBatch();// 执行批处理
conn.commit();
close(); // 关闭资源
}
public static void close() {
try {
if (rs != null)
rs.close();
if (stmt != null)
stmt.close();
if (stm != null)
stm.close();
if (conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2024-03-11 12:59:39 +08:00
*/