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