批量插入java
① java 如何批量插入數據
通過jdbc就可以執行批量插入了。
以下案例:
1、逐條執行10萬次
2、分批執行將10萬分成m批,每批n條,分多種分批方案來執行。
/**
* 批處理執行
*
* @param m 批次
* @param n 每批數量
* @throws Exception 異常時拋出
*/
public static void testInsertBatch(int m, int n) throws Exception {
init(); //初始化環境
Long start = System.currentTimeMillis();
for (int i = 0; i < m; i++) {
//從池中獲取連接
Connection conn = myBroker.getConnection();
Statement stmt = conn.createStatement();
for (int k = 0; k < n; k++) {
String sql = "\n" +
"insert into testdb.tuser \n" +
"\t(name, \n" +
"\tremark, \n" +
"\tcreatetime, \n" +
"\tupdatetime\n" +
"\t)\n" +
"\tvalues\n" +
"\t('" + RandomToolkit.generateString(12) + "', \n" +
"\t'" + RandomToolkit.generateString(24) + "', \n" +
"\tnow(), \n" +
"\tnow()\n" +
")";
//加入批處理
stmt.addBatch(sql);
}
stmt.executeBatch(); //執行批處理
stmt.close();
myBroker.freeConnection(conn); //連接歸池
}
Long end = System.currentTimeMillis();
System.out.println("批量執行" + m + "*" + n + "=" + m * n + "條Insert操作,共耗時:" + (end - start) / 1000f + "秒!");
}
② java怎麼實現千萬級數據量批量插入到資料庫中
先存進緩存資料庫中,如redis等。然後寫定時任務批量插入資料庫
③ java 面試的時候,面試官問我如果批量插入大量數據,我就要一次插入,要麼成功要麼失敗,怎麼做
全部放到一個事務裡面處理,如果失敗全部回滾。
④ java批量插入,返回id
如果是Hibernate就好辦了,直接saveOrupdate就行了
⑤ java 大批量數據插入的優化問題!
用事務。這樣可以具有統一性。然後第一個表插入的時候調用那個能返回主鍵的方法。這樣把返回的主鍵帶入第二條SQL。。 或者寫一個函數。。直接到資料庫裡面 操作插入去。
⑥ Mybatis中如何實現批量數據的插入,請寫出配置文件的配置信息以及Java代碼的源
MyBatis提供用於插入數據的註解有兩個:@insert,@InsertProvider,類似還有:@DeleteProvider@UpdateProvider,和@SelectProvider,
作用:
用來在實體類的Mapper類里註解保存方法的SQL語句
區別:
@Insert是直接配置SQL語句,而@InsertProvider則是通過SQL工廠類及對應的方法生產SQL語句,這種方法的好處在於,我們可以根據不同的需求生產出不同的SQL,搏昌州適用性更好。
使用:
@Insert
@Insert(「insert into blog(blogId,title,author) values(#blogId,#title,#author)」)
public boolean saveBlog(Blog blog);
@InsertProvider
在mapper介面中的方法上使用@InsertProvider註解:
參數解釋:
type為工廠類的類對象,
method為對應的工廠類中的方基蔽法,方法中的@Param(「list」)是因為迅宴批量插入傳入的是一個list,但是Mybatis會將其包裝成一個map。其中map的key為「list」,value為傳入的list。
⑦ 如何利用java連接資料庫並批量插入數據
簡單手寫一下
Stringsql="insert()values(?,?)";
conn.setAutoCommit(false);//關掉自動提交
PreparedStatementps=conn.prepareStatement(sql);
for(inti=0;i<list.getSize();i++){
ps.setString(1,list.get(i).xx);
ps.setString(2,list.get(i).yy);
ps.addBatch();
if(i%100==0){//用來處理大量數據,分批次提交
ps.excuteBatch();
ps.clearBatch();
}
}
ps.excuteBatch();
conn.commit();
ps.close();
⑧ java中怎麼一次性向表中插入一條或多條數據
java連接資料庫時,往資料庫一次添加多條數據,可以在DAO層,使用executeBatch()批量插入數據,如下代碼:
conn = DBToolkit.getConnection();
Statement stmt = conn.createStatement();
//連續添加多條SQL
stmt.addBatch("insert into testdb.book (kind, name) values ('java', 'java in aciton')");
stmt.addBatch("insert into testdb.book (kind, name) values ('c', 'c in aciton')");
//執行批量執行
stmt.executeBatch();
⑨ javalist批量寫入資料庫長度超了
原因:mybatis批量插入是有長缺春度限制如鋒
解決渣扮晌辦法:將大的list分批來批量插入,代碼如下:
⑩ java怎麼把數據批量插入資料庫中
傳統拼接insert into table() values(),(),()這種方式實現批量插入
採用資料庫持久化框架,比如hibernate,根據插入的記錄數,設定每多少次循環執行一次commit操作