jdbc oracle 百萬級資料量儲存
阿新 • • 發佈:2019-02-09
使用jdbc連線oracle資料庫進行百萬級資料插入操作。
預設的插入操作
insert into tablename()values()
每進行一條記錄的插入都會進行commit提交操作,因此使得儲存速度受到極大的影響,那麼如何解決此類問題呢?
兩種方法:
一、通過設定commit提交動作為非預設形式,然後設定每插入3000行(根據自己具體需求設定)進行一次提交
二、按照批次進行插入,然後根據自己需求進行統一批次提交Class.forName("oracle.jdbc.driver.OracleDriver"); conn = DriverManager.getConnection("jdbc: oracle:thin: @127.0.0.1:1521:abc", "scott", "tiger"); conn.setAutoCommit(false);//設定預設提交方式為false stmt = conn.createStatement(); state.execute(sql); conn.commit();//提交事務
Class.forName("oracle.jdbc.driver.OracleDriver"); conn = DriverManager.getConnection("jdbc: oracle:thin: @127.0.0.1:1521:abc", "scott", "tiger"); state = conn.createStatement(); for (String sql : sqlList) { state.addBatch(sql); if (++count % 1000 == 0) { state.executeBatch(); System.out.println("現已完成"+count+"條記錄插入"); } } state.executeBatch();
歸結起來其實兩種方法原理是一樣的,都是按照批次進行儲存。大大提高了資料儲存效率,此兩種方法省略了事務提交失敗回滾的操作,大家可以根據需要進行回滾操作。