关于java批量插入sqlServer字段太多问题

报错字段个数不能超过2100

于是批量插入还必须分批插入,单一批次不能超过2100

公式2100/表字段数 = 单个批量插入数量

查询表字段数:

select count(*) from syscolumns s  where s.id = object_id(‘表名’);

然后程序思想:

int colCount = commomMapper.selectColByTableName("emr_fun_group_distribution");
int simpleInsertCount = 2100/colCount;
List<Emr_Fun_Group_Distribution> list = new ArrayList<>();
String[] userIdList = userIds.split(",");
String[] userNameList = userNames.split(",");
for (int i = 0; i < userIdList.length; i++) {
    //处理批量添加sql太长问题,设定个数为180
    if(null != list && i > 0 && list.size()%simpleInsertCount == 0){
        list.clear();
    }
    if(StringUtils.isNotBlank(userIdList[i])){
        Emr_Fun_Group_Distribution distribution = new Emr_Fun_Group_Distribution();
        distribution.setTypeFlag(distributionVo.getTypeFlag());
        distribution.setUserId(Integer.valueOf(userIdList[i]));
        distribution.setUserName(userNameList[i]);
        distribution.setEffective(distributionVo.getEffective());
        distribution.setEffectiveTime(distributionVo.getEffectiveTime());
        distribution.setRemark(distributionVo.getRemark());
        distribution.setCreater(userName);
        distribution.setUpdater(userName);
        distribution.setCreateDate(fmt.format(new Date()));
        distribution.setUpdateDate(fmt.format(new Date()));
        list.add(distribution);
    }
    //是180的倍数或最后一个
    if(null != list && (list.size()%simpleInsertCount == 0 || i == userIdList.length - 1)){
        distributionMapper.SimpleInsert(list);
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值