解决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条数据的方法 的相关文章

  • NativeExpressAdView 不适用于本机广告单元 ID,但适用于横幅单元广告

    我已经将 admob 集成到我的项目中 并根据我正在使用的要求NativeExpress广告视图显示原生广告 但它不适用于本机的单位 ID 但当我添加横幅的单位 ID 时 它的工作发现NativeExpress广告视图如下 XML代码
  • Mockito:匹配除一个之外的任何字符串[重复]

    这个问题在这里已经有答案了 如何使用 Mockito 编写匹配器来匹配除特定字符串之外的任何字符串 我尝试使用一些 hamcrest 匹配器来否定和组合其他匹配器 但是 hamcrest 匹配器都返回类型的值Matcher
  • Java如何创建主线程

    我是 Java 技术的新手 我知道只有两种创建方法Thread in Java 扩展Thread类 实现可运行接口 所以这只是两种创建方式Thread 但是当我们用主 JVM 启动我们的程序时 启动了一个主程序Thread 我认为即使是 J
  • 缓冲后台输入流实现

    我已经写了背景InputStream and OutputStream 包装其他流并在后台线程上预读的实现 主要允许在处理解压缩流的不同线程中进行解压缩 压缩 这是一个相当标准的生产者 消费者模型 这似乎是一种利用多核 CPU 的简单方法
  • Mockito.any() 通过泛型接口

    是否可以通过泛型传递接口的类型 界面 public interface AsyncCallback
  • 为什么 SqlClient 在传递 SqlXml 时使用不必要的 XML 转换?

    我有一个关于从 C 代码将 xml 数据类型传递给查询的问题 首先 这是 SQL Server 上的一个表 CREATE TABLE dbo XmlTable id int IDENTITY 1 1 NOT NULL dat xml NOT
  • 时间序列中的峰值检测

    我目前正在开展一个小项目 我想在其中比较两个时间序列 相似性度量确实很模糊 如果两个时间序列大致具有相同的形状 则它们被认为是相似的 所以我心想 如果它们只需要具有相同的形状 我只需比较两个时间序列的峰值 如果峰值位于相同的位置 那么时间序
  • “包含非 LDH ASCII 字符”异常从何而来?

    我开发了一个应用程序 spring magnolia 它在新年 2018 左右开始为我抛出这个异常 但不为任何其他同事抛出异常 例外是正确的 有一个 在配置的主机名中 因此域名应该是固定的 尽管如此 它之前一直在工作 对于其他人来说它仍然在
  • 无法在 Eclipse IDE 中使用 java 建立与 SQL Server 2008 的数据库连接

    我正在尝试在 Eclipse IDE 中使用 Java 代码连接到 HP Operations Manager 数据库 我能够通过 Microsoft SQL Server Management Studio 2008 成功连接 但通过代码
  • jdbctemplate计数queryForInt并传递多个参数

    如何传入多个参数jdbcTemplate queryForInt得到计数 我试过这个 Integer count this jdbcTemplate queryForInt select count name from table name
  • 对卡在 CLOSE_WAIT 状态的连接进行故障排除

    我有一个在 Windows 上的 WebLogic 11g 中运行的 Java 应用程序 几天后它变得没有响应 我注意到的一个可疑症状是大量连接 大约 3000 个 出现在netstat即使服务器空闲 也具有 CLOSE WAIT 状态 由
  • JPA中flush的确切目的是什么

    一些令人困惑的解释 冲洗 刷新是将底层持久存储与内存中保存的持久状态同步的过程 它将更新或插入到正在运行的事务中的表中 但它可能不会提交这些更改 如果无论如何更改仅在提交后才会保留在数据库中 那么为什么要在代码中间刷新呢 运行刷新后 如果对
  • 为表中的每个组选择前 N 行

    我面临一个非常常见的问题 即 为表中的每个组选择前 N 行 考虑一个表id name hair colour score列 我想要一个结果集 对于每种头发颜色 都能得到前 3 名得分手的名字 为了解决这个问题 我得到了我所需要的Rick O
  • 当 xml 具有名称空间前缀时,为什么只有某些 XPath 表达式才能找到节点

    在下面的示例代码中 任何采用 形式的 XPath元素名称 当源 xml 有命名空间前缀时返回 null 请参阅testWithNS 在底部的代码中 当源 xml 没有名称空间前缀时 所有列出的 XPath 表达式都会返回一个节点 请参阅te
  • 如何将表中不存在但原始SQL中存在的实体字段设置为别名?

    假设我们有一个这样的查询 SELECT CUSTOM EXPRESSION as virtualfield FROM users 用户的实体本身具有 虚拟字段 但映射注释没有 因为表没有该字段 假设它作为原始 SQL 执行 我们如何使用上面
  • 如何为最终用户方便地启动Java GUI程序

    用户想要从以下位置启动 Java GUI 应用程序Windows 以及一些额外的 JVM 参数 例如 javaw Djava util logging config file logging properties jar MyGUI jar
  • 如何使用 Java 和 Selenium WebDriver 在 C 目录中创建文件夹并需要将屏幕截图保存在该目录中?

    目前正在与硒网络驱动程序和代码Java 我有一种情况 我需要在 C 目录中创建一个文件夹 并在该文件夹中创建我通过 selenium Web 驱动程序代码拍摄的屏幕截图 它需要存储在带有时间戳的文件夹中 如果我每天按计划运行脚本 所有屏幕截
  • Java中反射是如何实现的?

    Java 7 语言规范很早就指出 本规范没有详细描述反射 我只是想知道 反射在Java中是如何实现的 我不是问它是如何使用的 我知道可能没有我正在寻找的具体答案 但任何信息将不胜感激 我在 Stackoverflow 上发现了这个 关于 C
  • Java - 将节点添加到列表的末尾?

    这是我所拥有的 public class Node Object data Node next Node Object data Node next this data data this next next public Object g
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥

随机推荐

  • 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