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.
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)