當前位置:首頁 » 存儲配置 » sql存儲過程批量插入

sql存儲過程批量插入

發布時間: 2023-03-07 23:54:26

sqlserver 存儲過程大批量數據插入

可使用Merge Into 語句完成操作。
具體用法參考文章:http://www.cnblogs.com/biwork/p/3370335.html

⑵ 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;

⑶ 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;

代碼功能:

傳入一個行數,控制插入多少條數據

運行效果:

⑷ MSSQL 2008 中怎樣用存儲過程把一個表裡的數據批量復制到另一個表

-----將userinfo表裡的數據到userinfoCopy表中
declare @UserId int,@UserName nvarchar(50)
DECLARE UserArray CURSOR FOR SELECT * FROM [userInfo] with(nolock)
OPEN UserArray
FETCH NEXT FROM UserArray INTO @UserId,@UserName
WHILE @@FETCH_STATUS=0
BEGIN
INSERT INTO [userInfoCopy]
([Id]
,[name])
VALUES
(@UserId
,@UserName)

FETCH NEXT FROM UserArray INTO @UserId,@UserName
END
CLOSE UserArray
DEALLOCATE UserArray

希望對你有幫助。。。

⑸ c#怎樣向sqlserver批量插入數據

C#和MS SQL交互使用的技術叫做 ADO.NET。 使用ADO.NET可以方便的對SQL SERVER 進行操作。

(如果你對ADO.NET不了解,建議先MSDN一下)

批量插入數據,有兩種方式,

1,數據比較復雜但是量不是很大,(這個大小的概念要視你的硬體、網路而定,一般在100萬條以上才叫大)。

使用FOR循環進行插入, 即聲明連接(conn.Open)然後進行遍歷,

一條一條插入資料庫(執行Insert語句),

一般來說,100W條數據,如果插入本機資料庫的話, 耗時一般在40S-1分鍾左右,

也可以在SqlServer中創建一個存儲過程來執行Insert命令, 遍歷時只需要調用存儲過程即可, 存儲過程的執行效率比Sql語句要高很多,因為不需要每次都編譯

100W條數據用存儲過程來執行的話,一般耗時在20S左右,。


2數據量巨大,但是類型較簡單,(一般指上百萬條數據)

使用ADO.NET提供的BulkCopy,即批量導入,

語法:

publicstaticvoidBulkToDB(DataTabledt,stringTableName)
{
SqlConnectionsqlConn=newSqlConnection(
ConfigurationManager.ConnectionStrings["dbconnstr"].ConnectionString);

SqlBulkCopybulkCopy=newSqlBulkCopy(sqlConn);
bulkCopy.BulkCopyTimeout=600;
bulkCopy.DestinationTableName=TableName;
bulkCopy.BatchSize=dt.Rows.Count;

try
{
sqlConn.Open();
if(dt!=null&&dt.Rows.Count!=0)
bulkCopy.WriteToServer(dt);
}
catch(Exceptionex)
{
throwex;
}
finally
{
sqlConn.Close();
if(bulkCopy!=null)
bulkCopy.Close();
}
}

需要傳入一個DataTable,一個表名。


這種方式速度非常快,同樣100W條數據,本機導入,大概3-5秒就可以完成,

但是需要注意,傳入的DataTable必須和Sql Server中的表結構一模一樣,

比如你的表有3列,分別是Name, Age, Sex。 你傳入的DataTable也必須是如此,所以這種方式只適合導入一些基礎數據, 並不適合作為數據層的常用方法。


如果數據量巨大又要求很高的效率,更建議使用NoSql資料庫

熱點內容
安卓手機上網怎麼連接電腦 發布:2025-05-20 08:28:30 瀏覽:548
福建公積金密碼是什麼 發布:2025-05-20 08:28:13 瀏覽:507
學習編程用什麼軟體好 發布:2025-05-20 08:27:28 瀏覽:599
我的世界電腦版伺服器小游戲怎麼下載 發布:2025-05-20 08:17:12 瀏覽:533
離線語音識別android 發布:2025-05-20 08:11:37 瀏覽:153
小鳥雲如何去看客戶伺服器密碼 發布:2025-05-20 07:58:51 瀏覽:898
怎麼更改app的密碼 發布:2025-05-20 07:54:32 瀏覽:784
汽車配置物品怎麼處理 發布:2025-05-20 07:47:23 瀏覽:225
怎麼修改華為wifi密碼 發布:2025-05-20 07:45:12 瀏覽:41
php函數遞歸 發布:2025-05-20 07:39:36 瀏覽:781