批量插入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操作
