Saltar al contenido

ELIMINACIÓN masiva en SQL Server 2008 (¿Existe algo como Bulk Copy (bcp) para eliminar datos?)

Haz todo lo posible por interpretar el código correctamente antes de adaptarlo a tu trabajo si ttienes algo que aportar puedes comentarlo.

Solución:

No.

Desea un DELETE con una cláusula WHERE: este es SQL estándar.

Lo que puede hacer es eliminar por lotes de esta manera:

SELECT 'Starting' --sets @@ROWCOUNT
WHILE @@ROWCOUNT <> 0
    DELETE TOP (xxx) MyTable WHERE ...

O si desea eliminar un porcentaje muy alto de filas…

SELECT col1, col2, ... INTO #Holdingtable
           FROM MyTable WHERE ..opposite condition..
TRUNCATE TABLE MyTable
INSERT MyTable (col1, col2, ...)
           SELECT col1, col2, ... FROM #Holdingtable

Puede hacer un par de cosas si desea eliminar parte de su tabla y no TRUNCATE eso.

puede seleccionar una parte de la tabla en una nueva tabla, luego cambiar las dos, así:

SELECT *
INTO tmp_MyTable
FROM MyTable
WHERE Key='Value'

IF @@ROWCOUNT > 0
BEGIN
    EXEC sp_rename MyTable, old_MyTable, NULL
    EXEC sp_rename tmp_MyTable, MyTable, NULL
    TRUNCATE old_MyTable 
END

En segundo lugar, si está utilizando el particionamiento, puede crear una tabla idéntica (vacía) en el mismo esquema de partición… y si la tabla se particiona de acuerdo con su lógica de archivado/depuración, puede mover un bloque de partición de su tabla principal a la nueva tabla y luego truncar la nueva tabla. Por ejemplo:

ALTER TABLE MyTable
SWITCH PARTITION 15 TO purge_MyTable PARTITION 2 
GO; 

TRUNCATE TABLE purge_MyTable 

PD. Las particiones están disponibles en SQL 2005/08 Ent.

¡Espero que esto ayude!

Al final de la web puedes encontrar las observaciones de otros usuarios, tú igualmente tienes la libertad de insertar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *