postgres cómo colocar toda la tabla en un esquema mediante el comando

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

  • cuando uso DROP SCHEMA schemaname CASCADE; obtengo error ERROR: error de sintaxis en o cerca de " DROP " LINE 2: DROP Schema
  • LINE 2? ¿Qué ' s en la línea 1?
  • De hecho, necesito dejar todos los ta bles y su objeto dependiente. pero no debería borrar el procedimiento y todo ..
  • pero cuando uso el comando drop schema también borra el esquema. en mi caso, el esquema debería existir
  • @asalthangam respuesta actualizada

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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *