日期:2014-05-16 浏览次数:20508 次
因为整合spring,所以常用的方式很麻烦
于是从SQL下手,利用
INSERT INTO [TABLE]([FIELD],[FIELD]...)VALUES([VALUE],[VALUE]...),([VALUE],[VALUE]...)...这个SQL来做文章了
但是,在一条命令SQL引擎默认是一次最多插入1000笔记录,最多2100个字段参数,一次处理海量数据容易引起
The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Too many parameters were provided in this RPC request. The maximum is 2100.
和
The number of row value expressions in the INSERT statement exceeds the maximum allowed number of 1000 row values.
2个错误,所以插入的时候还要处理一下
public int insertPartList(List<Part> parts){ int rs=0; for(int i=0,s=0;i<parts.size()/117;i++,s+=117) rs+=getSqlSession().insert("insertPartList",parts.subList(s,s+116)); if(parts.size()-parts.size()/117*117>0) rs+=getSqlSession().insert("insertPartList",parts.subList(parts.size()/117*117,parts.size())); return rs; }
数字=2100/表字段数量 if(数字>1000) 数字=1000;写完了,117这个数字测试10k条数据
public static void main(String[] args) { PartDao partDao=(PartDao)new ClassPathXmlApplicationContext("configuration/spring.xml").getBean("PartImpl"); List<Part> parts=new ArrayList<Part>(); for(int i=0;i<10000;i++){ Part p=new Part(); p.setRid("r"+i); parts.add(p); } Function f=new Function(); System.out.println(f.getDateTime(new Date())); partDao.insertPartList(parts); System.out.println(f.getDateTime(new Date())); }