On 30-09-2014 20:33, Matheus de Oliveira wrote: > 2014-09-30 19:37 GMT-03:00 Fabrízio de Royes Mello <fabri...@timbira.com.br> > : > >>> Boa Tarde, gostaria de saber como fazer para zerar os dados de uma >> database >>> sem apagar a estrutura. Se alguém tiver alguma dica agradeço.. >>> >> >> Você tem algumas alternativas: >> >> 3) Rodar um TRUNCATE em todas as tabelas (esse acho mais interessante >> pois recria o datafile em disco) > > > Essa opção é legal, porque dá pra zerar as sequences de campos tipo serial > também, além de poder usar o CASCADE e não ter que se preocupar com a ordem > das dependências (como faria com DELETE). Eu faria algo do tipo (não > testado): > > 1) Executa a consulta: > > SELECT format('TRUNCATE TABLE %I.%I RESTART IDENTITY CASCADE;', > schemaname, tablename) > FROM pg_tables > WHERE schemaname !~ '^(pg_.*|information_schema)$'; > > 2) Salva o resultado num arquivo, confere e executa (uma boa ideia colocar > numa transação também). > > Dá até pra fazer direto (meio arriscado): > > $ psql dbname -c "SELECT format('TRUNCATE TABLE %I.%I RESTART IDENTITY > CASCADE;', schemaname, tablename) FROM pg_tables WHERE schemaname !~ > '^(pg_.*|information_schema)$';" | psql dbname --single-transaction >
Boa dica... e o RESTART IDENTITY é um recurso bem antigo, desde a 8.4... bem lembrado Matheus! Att, -- Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/ PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
signature.asc
Description: OpenPGP digital signature
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral