用JDBC實現(xiàn)批量插入的有效方法在我的應(yīng)用程序中,我需要做大量的插入。這是一個Java應(yīng)用程序,我使用普通JDBC執(zhí)行查詢。數(shù)據(jù)庫是Oracle。不過,我已經(jīng)啟用了批處理,因此可以節(jié)省網(wǎng)絡(luò)延遲來執(zhí)行查詢。但是,查詢作為單獨的插入依次執(zhí)行:insert into some_table (col1, col2) values (val1, val2)insert into some_table (col1, col2) values (val3, val4)insert into some_table (col1, col2) values (val5, val6)我想知道以下插入形式是否更有效:insert into some_table (col1, col2) values (val1, val2), (val3, val4), (val5, val6)也就是說,將多個插入物折疊成一個。還有其他讓批量插入更快的提示嗎?
3 回答

湖上湖
TA貢獻(xiàn)2003條經(jīng)驗 獲得超2個贊
PreparedStatement ps = c.prepareStatement("INSERT INTO employees VALUES (?, ?)"); ps.setString(1, "John"); ps.setString(2,"Doe"); ps.addBatch(); ps.clearParameters(); ps.setString(1, "Dave"); ps.setString(2,"Smith"); ps.addBatch(); ps.clearParameters(); int[] results = ps.executeBatch();

青春有我
TA貢獻(xiàn)1784條經(jīng)驗 獲得超8個贊
這個Statement提供以下選項:
Statement stmt = con.createStatement();
stmt.addBatch("INSERT INTO employees VALUES (1000, 'Joe Jones')");
stmt.addBatch("INSERT INTO departments VALUES (260, 'Shoe')");
stmt.addBatch("INSERT INTO emp_dept VALUES (1000, 260)");
// submit a batch of update commands for execution
int[] updateCounts = stmt.executeBatch();
添加回答
舉報
0/150
提交
取消