可使用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;