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();//关闭
}
}