java改单个插入为批量插入

单条insert into table value() 13W数据需要执行7小时

变成inert into table value(),(),(),(),()

inert into table value(),(),(),(),()

inert into table value(),(),(),(),()

这样,效率节省N倍 ,13W数据只需要3分钟

@Override
	public boolean addBRDforList(List<AiResultBai> data) {
		boolean flag=false;
		String sql="insert into `ai_result_baidu`(`id`,`data_base_id`,`sentiment`,`positive_prob`,`negative_prob`,`create_time`) values ";
				//+ "values ( NULL,?,?,?,?,?)";
		List<String> sbList = new ArrayList<>();//存储sql
		StringBuffer sb = new StringBuffer();
		DataBaseDao dbd=new DataBaseDaoImpl();
		for(int i = 0 ; i < data.size() ; i++) {
			//对数据进行分析,并得出base_id
			if(i==0 || i%10==0) {
				if (sb.toString().length() > 0) {//第一次不会进来
					sbList.add(sb.toString());
				}
				sb=new StringBuffer();
				sb.append(sql).append("(NULL,"+data.get(i).getData_base_id()+","+data.get(i).getSentiment()+","+data.get(i).getPositive_prob()+","+data.get(i).getNegative_prob()+",'"+data.get(i).getCreate_time()+"'"+")");
			}else if(i == data.size() -1) {
				sb.append(","+"(NULL,"+data.get(i).getData_base_id()+","+data.get(i).getSentiment()+","+data.get(i).getPositive_prob()+","+data.get(i).getNegative_prob()+",'"+data.get(i).getCreate_time()+"'"+")");
				sbList.add(sb.toString());
			}else {
				sb.append(","+"(NULL,"+data.get(i).getData_base_id()+","+data.get(i).getSentiment()+","+data.get(i).getPositive_prob()+","+data.get(i).getNegative_prob()+",'"+data.get(i).getCreate_time()+"'"+")");
			}
	
	}
		System.out.println(sbList.size());
		int j=0;
		for (String string : sbList) {
			j++;
			System.out.println(j+"=="+"sql====="+string);
			if(this.getconnection()) {
				this.executeUpdate1(string);
			
			}
			this.clossconnection();
		}
		if(sbList.size()==j) {
			flag=true;
		}

		
		System.out.println("共有Sql:"+sbList.size()+"条");
		return flag;
	}

 

转载于:https://www.cnblogs.com/sincoolvip/p/10487440.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值