在对 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中文网其他相关文章!