合并多条insert

最近更新时间: 2024-06-12 15:06:00

import java.sql.*;
import java.util.Random;
import java.util.UUID;
public class batch {
    public static void main(String args[]) {
        Connection conn = null;
        Statement stmt = null;
        try {
            Class.forName("org.postgresql.Driver");
            conn = DriverManager.getConnection("jdbc:postgresql://172.16.0.30:11345/postgres?reWriteBatchedInserts=true","tbase", "tbase");
            conn.setAutoCommit(true);
            System.out.println("Opened database successfully");
            //开始执行批量插入
            String insert_sql = "INSERT INTO t1 VALUES (?,?)";
            try {
                assert conn != null;
                PreparedStatement preparedStatement = conn.prepareStatement(insert_sql);
                for (int i = 0; i < 100000; i++) {
                    preparedStatement.setInt(1, new Random().nextInt(1000));
                    preparedStatement.setString(2, UUID.randomUUID().toString());
                    preparedStatement.addBatch();
                    if (i % 500 == 0) {
                        preparedStatement.executeBatch();
                        preparedStatement.clearBatch();
                    }
                }
                preparedStatement.executeBatch();
                preparedStatement.clearBatch();
            } catch (SQLException e) {
                e.printStackTrace();
            }

        } catch (Exception e) {
            System.err.println( e.getClass().getName()+": "+ e.getMessage() );
            System.exit(0);
        }
        System.out.println("Records created successfully");
    }
}