2013/7/15 Danilo Silva <[email protected]> > Pessoal, > > Meu usuário é dono do banco de dados, posso fazer praticamente tudo, mas > um DROP/CREATE DATABASE não é permitido. > > Esse banco é para testes, existe alguma maneira rápida de zerá-lo? Ou > seja, preciso "recriar" o banco, onde o procedimento seria: drop database; > create database; importar arquivo com as queries. Mas como disse acima não > tenho permissão para drop/create database. > > PostgreSQL 9.2.4 e 9.1.7 > > Não tem uma opção mágica do tipo: DROP ALL OBJECTS IN mydb. Mas tem algumas opções:
1. Consultar os catálogos e gerar um script que remove tudo. Exemplo (não testado): $ psql -Atc "SELECT 'DROP TABLE '||r.oid::regclass::text||' CASCADE;' FROM pg_class r JOIN pg_namespace n ON r.relnamespace=n.oid WHERE n.nspname !~ '^(information_schema|pg_.*)$' AND r.relkind='r';" <seu banco> | psql -At <seu banco> Claro que tem que adaptar para adicionar funções, operadores, esquemas, etc. 2. Geralmente mais fácil (pelo menos quando se tem poucos esquemas). Remover o(s) esquema(s) com e recriá-los. Exemplo: $ DROP SCHEMA public CASCADE; $ CREATE SCHEMA public AUTHORIZATION <seu usuário>; $ GRANT ALL ON SCHEMA public TO <seu usuário>; 3. Excluir todos objetos do seu usuário (se tiver objetos criados com outro usuário terá que fazer para todos): $ DROP OWNED BY <seu usuário>; E tem outras maneiras... Acho que a opção de excluir todo esquema e recriar é a mais confiável. Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
