解决SqlServer批量插入最多2100条数据的方法

2023-11-19

SqlServer批量插入数据时最多不能超过2100条,记录一下解决办法
Java代码:

 public void batchInsert(List<Student> list) {
        Integer BATCH_SIZE = 100;
        if (CollectionUtils.isNotEmpty(list)) {
            int insertListSize = list.size();
            int pageNum = insertListSize % BATCH_SIZE == 0 ? insertListSize / BATCH_SIZE : (insertListSize / BATCH_SIZE + 1);
            if (pageNum > 0) {
                for (int i = 1; i <= pageNum; i++) {
                    studentMapper.batchInsert(list.stream().skip(BATCH_SIZE * (i - 1)).limit(BATCH_SIZE).collect(Collectors.toList()));
                }
            }
        }
    }

mapper.xml中的sql语句:

<insert id="batchInsert" parameterType="java.util.List">
        insert into student
        (
	        id,
	        name,
	        del_flag,
	        create_time,    create_by
        )
        values
        <foreach collection="list" item="item" index="index" separator=",">
         (
            #{item.id},
            #{item.name},
            #{item.delFlag},
            #{item.createTime},#{item.createBy}
          )
        </foreach>
    </insert>

顺便记录一下批量更新,与批量插入基本一致
Java代码:

 public void batchUpdate(List<Student> list) {
        final int BATCH_UPDATE_SIZE = 80;
        if (CollectionUtils.isNotEmpty(list)) {
            int updateListSize = list.size();
            int pageNum = updateListSize % BATCH_UPDATE_SIZE == 0 ? updateListSize / BATCH_UPDATE_SIZE : (updateListSize / BATCH_UPDATE_SIZE + 1);
            if (pageNum > 0) {
                for (int i = 1; i <= pageNum; i++) {
                    studentMapper.batchUpdate(list.stream().skip(BATCH_UPDATE_SIZE * (i - 1)).limit(BATCH_UPDATE_SIZE).collect(Collectors.toList()));
                }
            }
        }
    }

mapper.xml中的sql语句:

    <update id="batchUpdate">
        update student
        <trim prefix="set" suffixOverrides=",">

            <trim prefix=" name = case" suffix=" end, ">
                <foreach collection="updateList" item="item" index="index">
                    <if test="item.name != null">
                        when id = #{item.id} then #{item.name}
                    </if>
                </foreach>
            </trim>

            <trim prefix=" del_flag = case" suffix=" end, ">
                <foreach collection="updateList" item="item" index="index">
                    <if test="item.delFlag != null">
                        when id = #{item.id} then #{item.delFlag}
                    </if>
                </foreach>
            </trim>

            <trim prefix=" update_time = case" suffix=" end, ">
                <foreach collection="updateList" item="item" index="index">
                    <if test="item.updateTime != null">
                        when id = #{item.id} then #{item.updateTime}
                    </if>
                </foreach>
            </trim>

            <trim prefix=" update_by = case" suffix=" end, ">
                <foreach collection="updateList" item="item" index="index">
                    <if test="item.updateBy != null">
                        when id = #{item.id} then #{item.updateBy}
                    </if>
                </foreach>
            </trim>
        </trim>
        where id in
        <foreach collection="updateList" index="index" item="item" separator="," open="(" close=")">
            #{item.id}
        </foreach>
    </update>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解决SqlServer批量插入最多2100条数据的方法 的相关文章

随机推荐

  • mysql根据某个字段去重数据,使用any_value函数和group by函数

    mysql根据某个字段去重数据 使用any value函数和group by函数 简单例子 sql分析 解决方式 参考资料 简单例子 sql分析 原sql SELECT rt name procActivityName rt ID proc
  • Zabbix5.0之邮件告警

    前言 依据zabbix5 0监控Nginx服务状态 当出现故障 或者异常关闭时 zabbix第一时间通过邮件通知到相关人员进行处理 以下文档并不讲述zabbix5 0部署 需要部署zabbix5 0的可参考 CentOS7 部署zabbix
  • k8s、docker关联目录占用空间太大

    今天突然磁盘满了 查看了一下 都是k8s docker关联的目录占用太大 var lib docker overlay2和 data registry docker registry v2 blobs sha256 使用第一种方式删除了悬空
  • appimage文件怎么安装_Linux应用安装有福啦!和苹果Mac一样方便的单文件安装

    自从用了苹果macbook 和windows基本上就再见了 苹果系统的稳定性太出色了 使用完合上盖子放十天半个月的没一点问题 一叫就醒 一醒就能接着工作 windows系统不行 要么睡了叫不醒 要么叫醒后电脑突然弹出个错误提示 甚至还可能蓝
  • 按where条件用expdp导出表

    按where条件用expdp导出表 情况1 情况2 其他说明 情况1 emp main表需要根据sendtime字段导出2018年的数据 参数文件emp main par的内容如下 tables emp main dumpfile emp
  • CentOs7.4 搭建 svn HTTP服务器

    一 通过yum安装svn yum y install mod dav svn yum y install subversion 通过如下命令查看svn 的安装位置 rpm ql subversion 二 创建版本目录库 此仅为目录 为后面创
  • 简单LSTM代码讲解

    仅供本人参考 错了概不负责 part1 图源 https www zhihu com question 41949741 answer 309529532 我们在使用tf nn rnn cell BasicLSTMCell时 有一个要自己设
  • STM32定时器系列 - STM32定时器输出比较

    STM32 定时器除了基本计数定时功能外 还对外扩展了输入 输出通道 从而可以实现输入捕获 比较输出功能 比较输出 Compare Output 功能 定时器通过对预设的比较值与定时器的值做匹配比较之后 并依据相应的输出模式从而实现各类输出
  • 大数据面试题及答案

    Hadoop 相关试题 Hive 相关试题 1 hive表关联查询 如何解决数据倾斜的问题 倾斜原因 map输出数据按key Hash的分配到reduce中 由于key分布不均匀 业务数据本身的特点 建表时考虑不周 等原因造成的reduce
  • 如何快速检测代理IP质量?方法与工具全干货

    一直以来 IP代理都是出海跨境业务的刚需 质量好的IP代理 除了在跨境业务产生巨大作用 在SEO监控 爬虫抓取 市场研究等领域也发挥着很大的作用 但是 对于IP代理的质量检测是我们选择高标准IP代理的一句 我们一般都会建议在使用IP代理前
  • 5G技术优势

    1G实现了移动通话 2G实现了短信 数字语音和手机上网 3G带来了基于图片的移动互联网 而4G则推动了移动视频的发展 5G网络则视为未来物联网 车联网等万物互联的基础 同时 5G普及将使得包括虚拟现实和增强现实这些技术成为主流 4G网络是专
  • 修改网页logo

    在用浏览器打开网站的时候 浏览器标签页上面有网站的图标 类似于logo小图标 如下图 步骤1 打开你的tomcat的安装目录 我的目录实在G盘 G apache tomcat 7 0 53 windows x64 apache tomcat
  • java进制转换方法

    一 十进制向二 八 十六进制的转换 方法一 Integer toBinaryString i 表示十进制转为二进制 Integer toOctalString i 表示十进制转为八进制 Integer toHexString i 表示十进制
  • 周庄不买门票攻略_周庄古镇旅游攻略

    周庄古镇旅游攻略 周庄古镇是世界文化遗产预选地 首批国家5A级旅游景区 位于苏州城东南 位于昆山 吴江 上海三地交界处 周庄古镇四面环水 因河成镇 依水成街 以街为市 井字型河道上完好保存着14座建于元 明 清各代的古石桥 800多户原住民
  • org/springframework/boot/maven/RepackageMojo has been compiled by a more recent version of the Java

    项目场景 项目中执行clean 再执行install时报错 错误如下 org springframework boot maven RepackageMojo has been compiled by a more recent versi
  • Python库之自然语言处理和文本挖掘

    来源地址 http www python88 com topic 37015 https mp weixin qq com s sPAomFg 5JZigFUG CtnaQ 自然语言处理和文本挖掘库主要用于以自然语言文本为对象的数据处理和建
  • linux基本命令练习

    1 列出 etc目录下的所有文件名称 2 创建文件file1 和file2 并复制到 home目录下 3 显示以ma开头的所有命令 ma 双击两次 TAB键 4显示所有文件名中有 bash的文件 用tab命令补全 5 显示当前所在的目录路径
  • android图像识别(百度普通物体识别)

    android图像识别 采用百度sdk 识别准确率基本上能用 主要缺陷是百度sdk免费额度有限 demo链接如下 仅供参考https download csdn net download android xc 12274161
  • Python进阶之CrawlSpider的应用及Scrapy配置项的引用

    1 CrawlSpider的应用 CrawlSpider可以根据规则自动分析链接的数据并按照正则的要求取出需要的数据 scrajpy startproject yg cd yg 注意 t crawl参数 scrapy genspider t
  • 解决SqlServer批量插入最多2100条数据的方法

    SqlServer批量插入数据时最多不能超过2100条 记录一下解决办法 Java代码 public void batchInsert List