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

Attachment: 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

Responder a