PostgreSQL JDBC Batch Insert 批量插入数据示例
PostgreSQL JDBC 提供了批量插入表数据的能力,相对于一条一条地插入数据,批量插入数据的性能更高。JDBC 在内部能够将多条 insert 语句拼接成 insert into values (...),(...),(...), 的形式,一批最多拼接 128 条记录,128 是 JDBC 内部硬编码,没有相关参数能够对其进行调整。使用 JDBC 批量插入功能需要将 JDBC 改写批量插入的参数打开 reWriteBatchedInserts=true。下面通过一个示例代码展示批量插入功能。
代码示例:
import java.util.Random; import java.sql.*; import java.util.Properties; public class BatchInsert{ public static void main(String[] args) { String url = "jdbc:postgresql://127.0.0.1:36004/postgres?reWriteBatchedInserts=true"; Properties props = new Properties(); props.setProperty("user", "admin"); props.setProperty("password", "123456"); try { int i = 0; Connection conn = DriverManager.getConnection(url, props); conn.setAutoCommit(false); PreparedStatement st1 = conn.prepareStatement("insert into t(id,name) values(?,?)"); for(i=0; i < 2000; i++){ st1.setInt(1,i); st1.setString(2, "hello"); st1.addBatch(); } st1.executeBatch(); st1.close(); conn.commit(); conn.close(); }catch (SQLException e) { e.printStackTrace(); } } }
编译执行:
javac -Djava.ext.dirs=jdbc BatchInsert.java java -Djava.ext.dirs=jdbc BatchInsert
查询数据库,表 t 中已经写入了 2000 条数据,如下:
postgres=# select count(*) from t; count ------- 2000 (1 row)
文章评论
共0条评论