![](/img/trans.png)
[英]SQL Server 2005 : how to 'access' XML table parameter in stored procedure
[英]How to make a staging table in SQL Server 2005?
我聽說過要做登台表,但我想知道您實際上是如何做到的。
我想將SqlBulkCopy做到登台表中。 然后更新真實表。
我在SQL Server 2008中聽說可以使用稱為merge的東西,但是我正在使用SQL Server 2005,所以我聽說必須使用更新內部聯接?
我不確定那會是什么樣子(我猜最好的方法是用SP編寫它)。 此外,登台表必須能夠處理並發更新。
我當時正在考慮將另一列作為GUID放入暫存器中,這樣我就可以知道哪些記錄屬於哪個組,以及何時該從暫存表中刪除記錄,我可以使用它。
因此,有人可以向我展示任何有關此操作的示例或教程嗎? 還有這種方法有多快? 假設您要更新的50,000條記錄需要多長時間(可以估算)
編輯
這就是我的SP。 我認為它應該能夠進行並發連接,但是我想確保。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[sp_MassUpdate]
@BatchNumber uniqueidentifier
AS
BEGIN
update Product
set ProductQty = 50
from Product prod
join StagingTbl stage on prod.ProductId = stage.ProductId
where stage.BatchNumber = @BatchNumber
DELETE FROM StagingTbl
WHERE BatchNumber = @BatchNumber
END
創建臨時表的方式與創建常規表的方式相同。 使用CREATE TABLE腳本定義列和數據類型。
好
update prod
set field1 = stage.field1
from myproductiontable prod
join mystagingtable stage on prod.somefield = stage.somefield
添加不在產品中的記錄
Insert myproductiontable (f1, f2, f3)
select stage.f1, stage.f2, stage.f3
from mystagingtable stage
where not exists (select someid from myproductiontable prod WHERE stage.somefield = prod.somefield)
但是您必須在登台表中具有一個或多個與prod表中的記錄相關的字段。 有時,您必須進行額外的聯接才能建立這種關系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.