Uso postgresql y necesito descartar todas las tablas que están presentes en el esquema. ¿Cómo puedo eliminar del símbolo del sistema?
Uso postgresql y necesito descartar todas las tablas que están presentes en el esquema. ¿Cómo puedo eliminar del símbolo del sistema?
Respuestas:
Desea usar la CASCADE
opción de DROP SCHEMA
. De la documentación :
CASCADE
- Caída automática de objetos (tablas, funciones, etc.) que están contenidos en el esquema y , a su vez, todos los objetos que dependen de esos objetos.
TEN CUIDADO - énfasis sobre el mío.
Obviamente, tendrá que recrear el esquema después.
Para soltar todas las tablas en el esquema actual, puede usar este script:
DO $$ DECLARE
tabname RECORD;
BEGIN
FOR tabname IN (SELECT tablename
FROM pg_tables
WHERE schemaname = current_schema())
LOOP
EXECUTE 'DROP TABLE IF EXISTS ' || quote_ident(tabname.tablename) || ' CASCADE';
END LOOP;
END $$;
Cambie WHERE schemaname = current_schema()
si desea descartar todas las tablas en un esquema diferente.
LINE 2
? ¿Qué hay en la línea 1?
@Techno Savvy
Descarte las tablas usando la sintaxis postgres:
select '-- drop table ' || tablename || ' cascade;' from pg_tables
where tablename not like 'pg%' and tablename not like 'sql%';
Copie el texto resultante en un script sql o terminal psql. Tenga en cuenta que los comandos están comentados.
Si solo quieres una forma realmente simple de hacer esto ... Aquí hay un script que he usado en el pasado
select 'drop table '||table_name||' cascade constraints;' from user_tables;
Esto imprimirá una serie de comandos de caída para todas las tablas del esquema. Agrupe el resultado de esta consulta y ejecútelo.
Del mismo modo, si desea borrar más de las tablas, puede editar lo siguiente para satisfacer sus necesidades
select 'drop '||object_type||' '|| object_name || ';' from user_objects where object_type in ('VIEW','PACKAGE','SEQUENCE', 'PROCEDURE', 'FUNCTION', 'INDEX')
Fuente: https://forums.oracle.com/forums/thread.jspa?threadID=614090