Saltar al contenido

Cómo eliminar varias tablas en PostgreSQL usando un comodín

Solución:

Utilice una lista separada por comas:

DROP TABLE foo, bar, baz;

Si realmente necesitas un revólver, este hará su trabajo:

CREATE OR REPLACE FUNCTION footgun(IN _schema TEXT, IN _parttionbase TEXT) 
RETURNS void 
LANGUAGE plpgsql
AS
$$
DECLARE
    row     record;
BEGIN
    FOR row IN 
        SELECT
            table_schema,
            table_name
        FROM
            information_schema.tables
        WHERE
            table_type="BASE TABLE"
        AND
            table_schema = _schema
        AND
            table_name ILIKE (_parttionbase || '%')
    LOOP
        EXECUTE 'DROP TABLE ' || quote_ident(row.table_schema) || '.' || quote_ident(row.table_name) || ' CASCADE ';
        RAISE INFO 'Dropped table: %', quote_ident(row.table_schema) || '.' || quote_ident(row.table_name);
    END LOOP;
END;
$$;

SELECT footgun('public', 'tablename');

Aquí hay otra respuesta hackear a este problema. Funciona en ubuntu y quizás algún otro sistema operativo también. hacer un dt en el símbolo del sistema de postgres (el símbolo del sistema se estaba ejecutando dentro genome-terminal en mi caso). Entonces verá muchas tablas en la terminal. Ahora usa ctrl+click-drag funcionalidad de la genome-terminal para copiar los nombres de todas las tablas. ingrese la descripción de la imagen aquí

Abra Python, realice un procesamiento de cadenas (reemplace ” por ” y luego ‘ n’ por ‘,’) y obtendrá una lista separada por comas de todas las tablas. Ahora en psql shell haz un drop table CTRL+SHIFT+V y tu estas listo. Sé que es demasiado específico, solo quería compartirlo. 🙂

Usé esto.

echo "select 'drop table '||tablename||';' from pg_tables where tablename like 'name%'" | 
    psql -U postgres -d dbname -t | 
    psql -U postgres -d dbname

Sustituir en valores apropiados para dbname y name%.

¡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 *