java分批處理10萬數據
⑴ java大數據量分批處理怎麼實現
讀取數據估計是沒辦法了,重點可以放在寫入的操作上,粗略的認為,你使用框架進行資料庫寫入操作還不如用使用java原生的jdbc進行操作然後使用jdbc 的原生的批處理,我覺得肯定比框架快。我記得我當時插入10w條數據,只用了3秒,不過用的是oracle資料庫。進行邊讀取邊插入,這樣佔用的內存也相對小一些
⑵ java的rs.next()當數據量到10萬以上的時候會很慢
看到上面說批量處理的回答我蛋碎了一地......
這明顯是讀取數據,而不是寫入資料庫,怎麼批處理?
你想知道他的效率,可以寫代碼測試一下,或者去分析他的源碼
//---------------------------------------
根據你的補充,你是想從原表中抽出部分列組成一個新表。
感覺類似於創建視圖。
你去了解一下資料庫的命令,貌似有類似命令。
直接在資料庫裡面執行,通過JDBC會有個IO過程和CPU的處理過程,效率肯定降低。
⑶ 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 從資料庫中查出10萬級條數據 生成cvs格式文件
10萬條也不算很大吧,查出來寫成csv不就完了嗎?csv實際上就是一個文本文件,每行是一條數據,每條數據各個欄位之間以逗號分隔,就行了
⑸ JAVA如何批量處理從資料庫提取出的數據
總得有個分隔符號,如,也行。
從第1個字元開始,直接分隔符號,再處理前面得到的資料
⑹ 請問用java怎麼把大量數據入庫到一張表,數據量一次有10萬條,資料庫sybase, 還要拿到成功入庫的條數
批量處理
每10000條(根據機器內存情況調整)循環一次
使用hibernate的session對10000條數據進行循環,每50條刷新一次
配置hibernate sql批量提交的條目數,設置成50
我資料庫用的是db2,10萬條效率還算可以
⑺ 急啊!java中怎麼把10萬條數據導入Excel,
public class ExcelWrit {
public static void main(String[] args) throws IOException, RowsExceededException, WriteException {
String path="D:\\123.xlsx";//找到Excel表格
File file=new File(path);//為excel表格開辟內存
WritableWorkbook workbook=Workbook.createWorkbook(file);
WritableSheet sheet=workbook.createSheet("第一頁", 0);
WritableSheet sheet2=workbook.createSheet("第二頁", 1);
for (int i = 1; i <=100000; i++) {
if (i<=50000) {
Label label=new Label(0, i,Integer.toString(i));
sheet.addCell(label);
System.out.println("正在寫入第"+i+"行");
}else {
Label label=new Label(0, i-50000,Integer.toString(i));
sheet2.addCell(label);
System.out.println("正在寫入第"+i+"行");
}
}
workbook.write();//寫入
workbook.close();//關閉
}
}