Eu uso o postgresql e preciso eliminar todas as tabelas que estão presentes no esquema. Como posso excluir do prompt de comando.
Resposta
Você deseja usar a CASCADE
opção de DROP SCHEMA
. Da documentação :
CASCADE
– Exclua automaticamente os objetos (tabelas, funções etc.) contidos no esquema, e, por sua vez, todos os objetos que dependem desses objetos
TENHA CUIDADO – ênfase acima da minha.
Obviamente, você precisará recriar o esquema depois.
Para apenas eliminar todas as tabelas do esquema atual, você pode 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 $$;
Alterar WHERE schemaname = current_schema()
se você quiser descartar todas as tabelas em um esquema diferente.
Comentários
Resposta
yourdb=# DROP SCHEMA *schema_name* CASCADE;
(funciona, apenas testado com Postgresql 9.6.3, pode não funcionar com versões anteriores)
Resposta
@Techno Savvy
Elimine tabelas usando a sintaxe postgres:
select "-- drop table " || tablename || " cascade;" from pg_tables where tablename not like "pg%" and tablename not like "sql%";
Copie o texto resultante em um script sql ou terminal psql. Observe que os comandos estão comentados.
Comentários
- A questão era sobre descartar tabelas em um esquema específico, eu acho.
Resposta
Se você deseja apenas uma maneira realmente simples de fazer isso … Aqui está um script que usei no passado
select "drop table "||table_name||" cascade constraints;" from user_tables;
Isso imprimirá uma série de comandos de remoção para todas as tabelas no esquema. Faça o spool do resultado desta consulta e execute-o.
Da mesma forma, se quiser limpar mais do que tabelas, você pode editar o seguinte para atender às suas necessidades
select "drop "||object_type||" "|| object_name || ";" from user_objects where object_type in ("VIEW","PACKAGE","SEQUENCE", "PROCEDURE", "FUNCTION", "INDEX")
Fonte: https://forums.oracle.com/forums/thread.jspa?threadID=614090
Comentários
- A questão é Postgres, não Oracle.
LINE 2
? Quais ' s na linha 1?