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后面的臨時表的字段和數據的字段要對應


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM