如何利用jdbc快速插入百萬條數據
當須要向數據庫插入百萬條數據時,利用hibernate,mybatis等持久層框架時耗時較久,此時使用jdbc插入效率會更高。此種場景特別適用於讀取文件導入到數據庫。可以利用批處理來加快jdbc的插入效率。
String sql = "insert into person(id,name) values(?,?)";
Connection c = ConnectionUtil.getConn();
PreparedStatement ps = c.prepareStatement(sql);
for (int i = 0; i < 1000; i++) {
ps.setInt(1, (i + 1));
ps.setString(2, "a" + i);
ps.addBatch();
}
ps.executeBatch();
同時可以增長單條sql語句的長度,如:
String sql = "insert into person(id,name) values(?,?),(?,?)";
Connection c = ConnectionUtil.getConn();
PreparedStatement ps = c.prepareStatement(sql);
ps.setInt(1, 1);
ps.setString(2, "a" + 1);
ps.setInt(3, 2);
ps.setString(4, "a" + 2);
ps.addBatch();
ps.executeBatch();
快速插入百萬對象到數據庫,可以利用jdbc工具類,方便的插入數據。
JdbcMapper j = new JdbcMapper();
List<Msg> ms = new ArrayList<>();
Msg m = new Msg();
for (int i = 0; i < count; i++) {
m.setMsgName("aa" + i);
m.setCreateTime(new Date());
m.setRemark("inserts");
ms.add(m);
}
j.insertMillionObjects(ms, 10000, 500);