可使用Merge Into 语句完成操作。
具体用法参考文章:http://www.cnblogs.com/biwork/p/3370335.html
2. 如何将存储过程中的数据批量插入数据库存中(C#)
存储过程还有这么个调用的,行不行啊?我到要试试看
补充:
参考:http://blog.csdn.net/itblog/article/details/752869
3. 存储过程批量插入数据问题
create proc pc_Text
@number_star int,
@number_end int
as
declare @int int
set @int=@number_end-@number_star+1
while(@int>0)
begin
select @int= count(1) from Text where aNumber1=@number_star
if(@int=1) --如果存在变化就不插入
begin
set @number_star=@number_star+1
set @int=@number_end-@number_star+1
end
else
begin
insert into Text value(@number_star ,...)
set @number_star=@number_star+1
set @int=@number_end-@number_star+1
end
end
4. 怎么写存储过程,向数据库中批量插入数据
用循环语句生成字段值insert
SQL 如下:
createprocereInsertTest
as
begin
declare@iint
declare@svarchar(20)
set@i=1
while@i<=100
begin
select@s=cast(@iASvarchar(20))
insertintotest(A,B,C,D)VALUES('a'+@s,'b'+@s,'ccccc','ddddd')
SET@i=@i+1
end
end
5. 跪求大神解答 sql server如何利用存储过程批量导入更新数据
做不到,存储过程只是代码,没办法实现界面,你说的那些功能与存储过程基本无任何关系,需要借助于其它的开发语言,比如C#、DELPHI、VB和JAVA之类的。
6. mysql存储过程怎样批量插入数据
一下代码运行通过:
delimiter$$;
createprocerelucia_proc16(countint)
begin
DECLAREname_procVARCHAR(20)CHARACTERSETutf8;
DECLAREsex_procVARCHAR(4)CHARACTERSETutf8;
DECLAREage_procINT(10);
DECLAREclass_procVARCHAR(20)CHARACTERSETutf8;
DECLAREAddr_procVARCHAR(50)CHARACTERSETutf8;
DECLAREiINT;
seti=1;
setsex_proc='女';
setage_proc=20;
setclass_proc='山治班';
setAddr_proc='北京市朝阳区';
whilei<countdo
setname_proc=CONCAT('露西亚',i);
insertintostudents(Name,Sex,age,class,Addr)values(name_proc,sex_proc,age_proc,class_proc,Addr_proc);
seti=i+1;
endwhile;
end
$$;
delimiter;
代码功能:
传入一个行数,控制插入多少条数据
运行效果:
7. 如何解决大量数据导入到数据库
针对你说的第二个问题:追加导入和更新导入,其实这就是一种方法的两个方面,若是数据库里没有数据,则追加,否则更新;这里提醒一下:注意锁定表
第三个问题:数十万级为单位是指百万还是千万数据?数据量大的情况下注意其SQL的优化
第四:比较简单的方式是:不管数据库里有没有数据需要更新,都先备份,然后再进行操作
关于问题补充:你说的电子表示是不是指excel中拥有三个sheet,每个sheet为一张表?
你说的建立中间表的想法是非常正确的,这样可以保证源数据和目的数据源的安全,有序
附:以你提问的水准,我想不需要提供具体的代码了
8. 大家对处理大批量的数据入库有什么心得
如果简单插入好办,直接插入就可以了。但如果是按楼主的计数处理方法,可以采用更灵活方式。例如,假设有一个table1表,这个表就是楼主说的要插入数据的表,再弄个和table1完全相同的table2表。将1000条数据完全插入table2(不做任何处理)。在插入之前要清空table2表。这时table2已有1000条数据。然后用table1和table2的共同主键(我想一般表都有primary key吧)相连(inner join),连接后的记录集假设有600条记录,那么这600条就是table1中已经存在的,这时将table1中的某字段值加1即可。那么table2中剩下的400条就是在table1中不存在的,这时用子查询获得那400条记录,再插入table1表即可。也许有更好的方法,不过我临时只想到了这个,如果谁有更好的方法可以共享。还有就是不知道楼主那1000条记录是以什么形式组织的。如果也是表,那就更好了。哈哈。
9. oracle存储过程怎样批量插入新数据
需要生成的SQL
insert into TMP_UPSTATE_CASEKEY values('TMP0000001', 1, sysdate);
存储过程实现
create or replace procere proc_casekey_upstate
as
casekey char(14);
begin
for i in 1..10000000 loop
casekey := 'TMP'||lpad(i,7,0); -- TMP0000001
insert into TMP_UPSTATE_CASEKEY values(casekey, 1, sysdate);
end loop;
commit;
end;
begin
proc_casekey_upstate();
end;
测试发现生成一千万条数据用了14分钟左右,性能还是可以了,如果先去掉TMP_NUM_STATUS_ID的外键估计更快。
或者:
insert into TMP_UPSTATE_CASEKEY select 'TMP'||LPAD(rownum,7,0),1,sysdate from al connect by level <= 1000000;