当前位置:   article > 正文

Java使用SqlServer批量插入insert_java批量插入sqlserver

java批量插入sqlserver

前言

初次使用SqlServer,发现其批量插入和MySQL等有些不同,做下记录

一、SqlServer批量插入限制

SqlServer 插入操作时对语句的条数和参数的数量都有限制,分别是 1000 和 2100。在往SqlServer数据库插入数据时,SqlServer的限制总体插入字符不能大于2100,即如果表中设计21个字段,一次插入10条数据,本次就完成了210个字符的插入,如此算来单次插入数据条数的上限就为100条。所以代码设计时,需要根据表中设计的可扩展的字段数量后,通过后台逻辑进行分批次插入。

二、代码示例

表中共30个字段,单次插入70条数据

分批次插入代码如下(示例):

public void batchInsertEmployee(String inPath){
        EmployeeDto dto = new EmployeeDto();
        List<Object> employeeList = ReadCsvUtils.readCsv(inPath,dto,"\",\"");
        if(employeeList != null && employeeList.size() > 0){
            int k = 0;
            List<Object> batchInsertData;
            //每次插入前清空表
            dao.truncateEmployee();
            if(employeeList.size() <= 70){
                dao.insertBatchEmployee(employeeList);
            } else {
                for (int j = 0; j < employeeList.size()/70; j++) {
                    batchInsertData = employeeList.subList(k, (j+1)*70);
                    dao.insertBatchEmployee(batchInsertData);
                    k = (j+1)*70;
                }
                if(k < employeeList.size()){
                    batchInsertData = list.subList(k, employeeList.size());
                    dao.insertBatchEmployee(batchInsertData);
                }
            }
        }
}

insertBatchEmployee代码如下(示例):
<insert id="insertBatchEmployee" parameterType="java.util.List" >
    insert into EMPLOYEE(column1,column2,column3,column4,column5,...,column30) 
    values
    <foreach collection="list" item="item" separator=",">
      (
        #{item.column1},#{item.column2},#{item.column3},#{item.column4},#  {item.column5},...,#{item.column30}
      )
    </foreach>
</insert>


总结

SqlServer 插入操作时对语句的条数和参数的数量都有限制,分别是 1000 和 2100。在往SqlServer数据库插入数据时,SqlServer的限制总体插入字符不能大于2100

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/612434
推荐阅读
相关标签
  

闽ICP备14008679号