zoukankan      html  css  js  c++  java
  • sql INSERT 语句中行值表达式的数目超出了 1000 行值的最大允许值 的问题解决办法

    在往SQL server 2008R2的同一张表一条sql插入1000条以上数据的就会出现 “INSERT 语句中行值表达式的数目超出了 1000 行值的最大允许值。” 这个错误,如图

    image-20200414170643199

    sql语句类似于这种:

    insert into test(name) values (1),(2),(3),(4),(5),(6),...(1001) --这里是1001条记录

    那么如何解决这个问题呢:

    第一种思路:拆分

    把sql 分批插入 不要大于1000条数据就行

    第二种思路:使用表复制的方式,将要插入的数据变成临时表打破这个限制

    格式

    insert into 表名(字段1,字段2......) select 临时表名.字段1,临时表名.字段2...... from (values(行1数据),(行2数据)......) as 临时表名(字段1,字段2......)

    具体实现:

    原来的sql

    insert into test(name) values (1),(2),(3),(4),(5),(6),...(1001)

    修改后的sql

    insert into test (name) select t.name from (values ('1'),('2'),('3'),('4'),('5'),('6'),...('1001')) as t(name)

    如果要批量插入多个字段的sql

    insert into test (name,sex) select t.name,t.sex from (values ('1',‘男’),('2',‘男’),('3',‘男’),('4',‘男’),('5',‘男’),('6',‘男’),...('1001',‘男’)) as t(name,sex)

    注意:from后面的临时表的字段和数据的字段要对应

  • 相关阅读:
    图论100题 1~5题
    定价 题解
    题解 编码问题【NOIP1995普及+提高】
    【题解】2020牛客NOIP赛前集训营-普及组(第二场)
    数论学习笔记
    el-tree 点击选中的数据集合
    nginx 本地配置(解决跨域问题)
    原生对象写法,dom调用方法
    手写无缝轮播banner
    element Notification 通知文字换行小技巧
  • 原文地址:https://www.cnblogs.com/makalochen/p/12699258.html
Copyright © 2011-2022 走看看