「java几十万数据入库」java几十万数据入库要多久

博主:adminadmin 2022-12-11 02:00:08 80

本篇文章给大家谈谈java几十万数据入库,以及java几十万数据入库要多久对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java中如何将几万条数据解析存表

把UNIX日志数据文件,解析成对象,传输到服务器并保存在oracle数据库。难点在数据文件格式的研究,其它的就比如把大象装冰箱里,哈哈。希望对你有帮助

读取文件,如果是数据文件比较麻烦,因为需要把二进制解析成String或int等。

a. 事先需要知道数据文件的格式(每个多少字节是个什么字段,每个多少字节是个完整对象)。

b.用RandomAccesFile读取数据文件,跟常用IO流的区别是,它的seek()方法能方便在文件中定位。比如从第n个字节开始读16个字节,是个int型,表示日期。

c. 每读取一个数据,解析成int、String等类型,存入下面POJO类的对应属性中。

d. 循环直到文件结束。

新建POJO类,用来存放解析出来的数据。

要求POPO对象的属性与数据库表字段一一对应。

将POJO对象持久化到数据库表中。

用jdbc就可以,一条insert语句。需要的话其它OR框架如hibernate也可。

java 从几十万条数据的list集合中随机取出1000个元素重新生成集合?

ListString list = new ArrayListString();

ListString new_list = new ArrayListString();

for (int i = 0 ; i 1200000;i++)

{

list.add(i+"");

}

long time1 = System.currentTimeMillis();

Collections.shuffle(list);

new_list = list.subList(0,1000);//方法1耗时65~130

new_list = createRandomList(list,1000);//方法2耗时2~5

long time2 = System.currentTimeMillis();

System.out.println(time2 - time1);

private static List createRandomList(List list, int n)

{

Map map = new HashMap();

List listNew = new ArrayList();

if (list.size() = n)

{

return list;

}

else

{

while (map.size() n)

{

int random = (int) (Math.random() * list.size());

if (!map.containsKey(random))

{

map.put(random, "");

listNew.add(list.get(random));

}

}

return listNew;

}

}

这个方法测试

请问用java怎么把大量数据入库到一张表,数据量一次有10万条,数据库sybase, 还要拿到成功入库的条数

批量处理

每10000条(根据机器内存情况调整)循环一次

使用hibernate的session对10000条数据进行循环,每50条刷新一次

配置hibernate sql批量提交的条目数,设置成50

我数据库用的是db2,10万条效率还算可以

java 怎么把5万条数据分批插入数据到mysql,之前插1,2万没事, 多了就内存溢出

你的事务控制问题。

大量数据插入的时候,可以将数据量分批,每次事务提交一批。

例如:

con.setAutoCommit(false);// 更改JDBC事务的默认提交方式

Statement stmt = conn.createStatement();

// 第一批 省略n条

stmt.addBatch("insert into dept values (52,'a','aa')");

stmt.addBatch("insert into dept values (53,'b','bb')");

stmt.addBatch("insert into dept values (54,'c','cc')");

stmt.executeBatch();

con.commit();//提交JDBC事务

stmt.close();

// 第二批 省略n条

stmt = conn.createStatement();

stmt.addBatch("insert into dept values (52,'a','aa')");

stmt.addBatch("insert into dept values (53,'b','bb')");

stmt.addBatch("insert into dept values (54,'c','cc')");

stmt.executeBatch();

con.commit();//提交JDBC事务

stmt.close();

// 第n批

。。。。。。

con.setAutoCommit(true);// 恢复JDBC事务的默认提交方式

conn.close();

java 把list中有几十万的数据怎么快速更新到数据库

Java7 自带 fork-join,建议使用fork-join,在高大上一点儿可以使用hadoop的mapreduce

java如何快速处理大数据

文件读取:首先是一个文件上传,数据入库,10-200万条不等,这里主要考虑到一次性读取,JVM分配出来的栈内存不一定会够(个人对内存这一块还是处于一知半解的状态,所以比较谨慎,若诸位大神有好的认知,希望评论留下地址分享一下),是依行读取数据,设定一个批量值,当读取的数据达到一定量之后,执行批量入库操作,清空集合,再接着读取。

//读取文件内容

while((s = br.readLine())!=null){

//判断是否达到单次处理量

if(num%leadingNum==0num!=0){

int a = stencDao.insertBatch(listBean);

if(a!=leadingNum){

flag = false;

}

//清空集合

listBean.clear();

}

String value = s.trim();

//将读取到的内容放入集合中

if(!value.equals("")){

StencilCustomer bean = new StencilCustomer();

bean.setCustomerPhone(value);

bean.setLinkStencilId(id);

listBean.add(bean);

num ++;

}

}

数据处理:这里的思路也是将数据小化然后处理,这里使用了多线程,设定单个线程处理量,然后开启多个线程处理,这里需要考虑你的服务器的承载能力,如果线程开得太多了,处理不过来,会出现蹦死的情况。例如200万数据,我开了20个线程,单个线程处理600条。

//建立一个线程池 ThreadPoolExecutor threadPool = new ThreadPoolExecutor(

minTaskNumber, maxTaskNumber, 3L, TimeUnit.SECONDS,

new ArrayBlockingQueueRunnable(minTaskNumber),

new ThreadPoolExecutor.DiscardOldestPolicy());

//当正在执行的线程数达到最大执行线程数的时候等待

boolean flag = true;

while(flag){

Thread.sleep(1000);//休眠2ms查询一次

int c = threadPool.getActiveCount();//线程池中活动中的线程数量

if(cmaxTaskNumber){

flag = false;

}

}

上面的代码是我对线程池的一个控制,控制服务器一直最大线程执行,Thread.sleep(1000);用while的时候,这个休眠最好不要去掉,去掉之后很影响执行效率

关于java几十万数据入库和java几十万数据入库要多久的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-11,除非注明,否则均为首码项目网原创文章,转载请注明出处。