Beim Durchführen von Massenvorgängen für SQL Server-Tabellen fragt man sich oft, ob es eine Möglichkeit gibt, Massenlöschvorgänge ähnlich wie bei den weit verbreiteten durchzuführen Gebrauchtes und effizientes Bulk Copy (bcp)-Tool für Einfügevorgänge. Diese Frage stellt sich aufgrund des Fehlens einer dedizierten Massenlöschungsfunktion in SQL Server.
Leider ist die Antwort negativ. SQL Server bietet keinen direkten Mechanismus wie bcp zum Massenlöschen von Daten. Wenn Sie die vom Löschvorgang betroffenen Zeilen mithilfe einer WHERE-Klausel einschränken möchten, können Sie nicht den Befehl TRUNCATE verwenden, der alle Zeilen in einer Tabelle ohne Filterung löscht.
Alternative Ansätze
Da es kein Dienstprogramm zum Massenlöschen gibt, gibt es einige alternative Ansätze nehmen Sie:
Batch-Löschungen:
Tabellentausch:
Beispiel:
-- 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
Bedenken Sie, dass diese alternativen Ansätze möglicherweise nicht immer die gleiche Leistung wie ein dedizierter Bulk bieten Löschfunktion. Sie bieten jedoch praktikable Optionen für umfangreiche Löschvorgänge, wenn die Verwendung einer WHERE-Klausel erforderlich ist.
Das obige ist der detaillierte Inhalt vonBietet SQL Server 2008 eine Funktion zum Massenlöschen ähnlich wie bcp?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!