com.microsoft.sqlserver.jdbc.SQLServerException: 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。此 RPC 请求中提供了过多的参数。
SQL Server 的最大容量规范
1.批量导入
List<Stores> list = new ArrayList<>();
//SqlServer 对语句的条数和参数的数量都有限制,分别是 1000 和 2100。
if(list.size()>99){
List<Stores> lists = new ArrayList<>();
for (int i=0;i<list.size();i++){
lists.add(list.get(i));
if(i!=0 && i%99==0 || i==list.size()-1){//每100条批量导入
//批量导入
storesMapper.bulkImport(lists);
lists = new ArrayList<>();
}
}
}else{
//批量导入
storesMapper.bulkImport(list);
}
2.对应的xml(collection接收的集合,item循环的变量名称,separator分隔符)
<!-- 批量导入 -->
<insert id="bulkImport" parameterType="java.util.List">
INSERT INTO stores(name,address,create_time,update_time,is_delete)
VALUES
<foreach collection="list" item="s" separator=",">
(#{s.name,jdbcType=VARCHAR}
,#{s.address,jdbcType=VARCHAR}
,#{s.createTime,jdbcType=TIMESTAMP}
,#{s.updateTime,jdbcType=TIMESTAMP}
,#{s.isDelete,jdbcType=INTEGER})
</foreach>
</insert>
3.Mapper映射
public interface StoresMapper extends BaseMapper<Stores> {
//批量导入
Integer bulkImport(List<Stores> list) throws Exception;
}
网友评论