在往SQL server 2008R2的同一張表一條sql插入1000條以上數據的就會出現 “INSERT 語句中行值表達式的數目超出了 1000 行值的最大允許值。” 這個錯誤,如圖
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后面的臨時表的字段和數據的字段要對應