2016-03-15 87 views
1

我有一個表「temp」和「data」。我想將一些特定數據從「temp」表複製到「data」表以及一些批量的用戶數據。 目前,我有一個代碼像JdbcTemplate.update從一個表輸入到其他

JdbcTemplate.update("insert into Data(a, b, c, d, e) " 
       + "select a, b, c, ?, e" 
       + "from Temp where d= ?", id, Date); 

但我想這分批進行的數據> 10,00,000行,這使我們充滿我的事務日誌與此單交易,因此需要打破這種單一交易成倍數。

回答

0

嘗試創建想要插入的所有參數的List,並使用以下方法使用批量更新。

public void insertBatch(final List<TempObj> TempList) { 

    String str = "Your query here."; 

    getJdbcTemplate().batchUpdate(str, new BatchPreparedStatementSetter() { 

     @Override 
     public void setValues(PreparedStatement ps, int i) 
      throws SQLException { 

      TempObj obj = TempList.get(i); 
      ps.setString(1, obj.getId()); 
      ps.setDate(2, obj.getDate()); 

     } 

     @Override 
     public int getBatchSize() { 
      return TempList.size(); 
     } 

    }); 

}