Eu fiz isso há algum tempo, basta chamar select * from limpa_tabelas() e na função limpa_tabela() mudar o nome do schema que você quer, mesmo que dê erro de integridade, ele continua a apagar, até apagar tudo:
CREATE OR REPLACE FUNCTION "migracao"."limpa_tabela" () RETURNS boolean AS $body$ /* New function body */ declare rmsg record; retorno boolean; begin retorno := true; for rmsg in (select distinct pg_tables.tablename as tabela from pg_tables ,pg_class ,pg_namespace where pg_namespace.nspname = 'public' and pg_tables.schemaname = pg_namespace.nspname and pg_class.relname = pg_tables.tablename and pg_class.relnamespace = pg_namespace.oid ) loop BEGIN EXECUTE('delete from '||rmsg.tabela); EXCEPTION when integrity_constraint_violation then retorno := false; end; end loop; return retorno; end; $body$ LANGUAGE 'plpgsql' VOLATILE RETURNS NULL ON NULL INPUT SECURITY INVOKER; CREATE OR REPLACE FUNCTION "migracao"."limpa_tabelas" () RETURNS boolean AS $body$ /* New function body */ begin while (migracao.limpa_tabela() = false) loop raise notice 'falhou'; end loop; return true; end; $body$ LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; 2009/8/31 "André Ormenese ( Yahoo )" <ormen...@yahoo.com.br> > Boa tarde pessoal !! > > Estou migrando os dados de um banco numa máquina X, para um outro banco > numa máquina Y. > > Os bancos teem os nomes diferentes, e o relacionamento das tabelas na > máquina Y também é diferente do relacionamento da máquina X. Por isso só > posso fazer um dump -a. > > Como já existem dados de teste, preciso apagar tudo. > > Existe alguma forma automática de criar um script que apague todos os > dados ( e somente os dados ) de todas as tabelas de um schema, seguindo > uma ordem que não cause problemas de integridade referencial, ou eu > preciso fazer isso tabela-a-tabela ??? > > > > > Obrigado > André > _______________________________________________ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > -- André Luiz Martins Pignata Integral Convênios Odontológicos Gerente de TI
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral