2014-09-30 19:37 GMT-03:00 Fabrízio de Royes Mello <[email protected]>
:
> > 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
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