Yo uso postgresql y necesito eliminar todas las tablas que están presentes en el esquema. ¿Cómo puedo eliminar desde el símbolo del sistema?
Respuesta
Desea utilizar CASCADE
opción de DROP SCHEMA
. De la documentación :
CASCADE
– Suelta automáticamente los objetos (tablas, funciones, etc.) que están contenidos en el esquema, y, a su vez, todos los objetos que dependen de esos objetos
TENGA CUIDADO – énfasis sobre el mío.
Obviamente, necesitará volver a crear el esquema después.
Para eliminar 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 $$;
Cambiar WHERE schemaname = current_schema()
si desea eliminar todas las tablas en un esquema diferente.
Comentarios
Respuesta
yourdb=# DROP SCHEMA *schema_name* CASCADE;
(funciona, solo se probó con Postgresql 9.6.3, puede que no funcione con versiones anteriores)
Respuesta
@Techno Savvy
Elimine tablas usando la sintaxis de 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.
Comentarios
- Creo que la pregunta era sobre eliminar tablas en un esquema específico.
Respuesta
Si solo desea una forma realmente sencilla de hacer esto … Aquí está 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 colocación para todas las tablas del esquema. Distribuya el resultado de esta consulta y ejecútelo.
Del mismo modo, si desea borrar más que tablas, puede editar lo siguiente para adaptarlo a 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
Comentarios
- La pregunta es Postgres, no Oracle.
LINE 2
? ¿Qué ' s en la línea 1?