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 )" <[email protected]>
> 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
> [email protected]
> 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
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral