在對SQL Server 表執行批次操作時,人們經常想知道是否有一種方法可以執行類似於廣泛的批次刪除操作使用高效率的批次複製(bcp) 工具進行插入操作。出現這個問題是因為 SQL Server 中缺乏專用的批次刪除功能。
不幸的是,答案是否定的。 SQL Server不提供像bcp這樣的直接機制來批次刪除資料。如果要使用 WHERE 子句限制受刪除操作影響的行,則不能使用 TRUNCATE 命令,該命令會刪除表中的所有行而不進行任何過濾。
替代方法
在沒有批次刪除實用程式的情況下,您可以使用幾種替代方法來採取:
批次刪除:
表格交換:
範例:
-- Batched Deletes SELECT 'Starting' --sets @@ROWCOUNT WHILE @@ROWCOUNT <> 0 DELETE TOP (1000) MyTable WHERE ... -- Table Swap SELECT col1, col2, ... INTO #Holdingtable FROM MyTable WHERE ..opposite condition.. TRUNCATE TABLE MyTable INSERT MyTable (col1, col2, ...) SELECT col1, col2, ... FROM #Holdingtable
範例:
範例:範例:範例:例如>請記住,這些替代方法可能不會總是提供與專用批次相同的效能刪除功能。然而,當需要使用 WHERE 子句時,它們為大規模刪除操作提供了可行的選項。以上是SQL Server 2008是否提供類似bcp的批次刪除功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!