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条评论