用java快速批量insert資料
阿新 • • 發佈:2019-01-08
由於要專案準備上線,所以要準備大量測試資料測試新專案的效能,但是又不太會用儲存過程和資料庫事務進行資料插入。
最開始使用最簡單的java的for迴圈語句不停的add物件,但是發現這個效率太低,要插入幾百萬資料估計得一天,於是在網上找了下,找到一篇直接使用jdbc直接插入資料的,拿下來試了下發現效能雖然比new物件好,但是效率也很低。
只能再找,終於找到一個很高的,也就是使用批次提交方式的sql執行,這個100萬資料大概也就30秒左右。
[java] view plain copy print?- publicstaticvoid insertRelease() {
- Long begin = new
- String sql = "INSERT INTO tb_big_data (count, create_time, random) VALUES (?, SYSDATE(), ?)";
- try {
- conn.setAutoCommit(false);
- PreparedStatement pst = conn.prepareStatement(sql);
- for (int i = 1; i <= 100; i++) {
- for
- pst.setLong(1, k * i);
- pst.setLong(2, k * i);
- pst.addBatch();
- }
- pst.executeBatch();
- conn.commit();
- }
- pst.close();
- conn.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- Long end = new Date().getTime();
- System.out.println("cast : " + (end - begin) / 1000 + " s");
- }