es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

TSQL – Cómo encontrar todas las tablas con una fecha en el nombre.

Escenario:

He visto casos en los que las tablas se respaldan (copian) temporalmente y se les agrega una fecha al final del nombre. A veces, alguien olvida eliminar estas tablas o simplemente ya no son necesarias.

Quería una forma de encontrar cualquier tabla que tuviera una fecha en el nombre para poder eliminar las tablas innecesarias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una posible forma de identificar tablas con fechas en sus nombres en SQL Server es utilizando una combinación de las vistas INFORMATION_SCHEMA y SQL dinámico.

    Aquí hay un ejemplo de script que podría lograr esto:

    DECLARE @table_name sysname
    DECLARE @sql nvarchar(max)
    
    DECLARE table_cursor CURSOR FOR
    SELECT TABLE_NAME
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME LIKE '%[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]%';
    
    OPEN table_cursor
    
    FETCH NEXT FROM table_cursor INTO @table_name
    
    WHILE @@FETCH_STATUS = 0
    BEGIN
        SET @sql = 'DROP TABLE ' + QUOTENAME(@table_name)
        PRINT 'Borrando tabla ' + @table_name
        EXEC (@sql)
        FETCH NEXT FROM table_cursor INTO @table_name
    END
    
    CLOSE table_cursor
    DEALLOCATE table_cursor
    

    Este script utiliza un cursor para iterar a través de todas las tablas en la base de datos actual que tienen un nombre que contiene una fecha en el formato “AAAA-MM-DD”. Esto se hace filtrando los resultados de la vista INFORMATION_SCHEMA.TABLES utilizando el operador LIKE y un patrón que coincide con cuatro dígitos, seguidos de un guión, seguido de dos dígitos, otro guión y otros dos dígitos.

    Para cada tabla encontrada, el script construye una declaración SQL dinámica que elimina la tabla utilizando el comando DROP TABLE y la función QUOTENAME para escapar adecuadamente el nombre de la tabla. Antes de ejecutar la declaración SQL dinámica, el script también imprime un mensaje que indica qué tabla se está borrando.

    Es importante tener en cuenta que este script asume que solo las tablas que cumplen con la convención de nombres descrita anteriormente deben ser borradas, y que todas las demás tablas deben permanecer intactas. También asume que el usuario que ejecuta el script tiene los permisos necesarios para borrar tablas. Por lo tanto, debes revisar y modificar este script según sea necesario antes de ejecutarlo en tu entorno.

Comments are closed.