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

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
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Reply via email to