PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como fazer backup de funções apenas no Postgres


use pg_getfunctiondef; consulte as funções de informações do sistema. pg_getfunctiondef foi adicionado no PostgreSQL 8.4.
SELECT pg_get_functiondef('proc_name'::regproc);

Para despejar todas as funções em um esquema, você pode consultar as tabelas do sistema em pg_catalog; diga se você queria tudo de public :
SELECT pg_get_functiondef(f.oid)
FROM pg_catalog.pg_proc f
INNER JOIN pg_catalog.pg_namespace n ON (f.pronamespace = n.oid)
WHERE n.nspname = 'public';

é trivial alterar o acima para dizer "de todos os esquemas, exceto aqueles que começam com pg_ " em vez disso, se é isso que você quer.

Em psql você pode despejar isso em um arquivo com:
psql -At dbname > /path/to/output/file.sql <<"__END__"
... the above SQL ...
__END__

Para executar a saída em outro banco de dados, use algo como:
psql -1 -v ON_ERROR_STOP -f /path/to/output/file.sql target_db_name

Se você estiver replicando funções entre bancos de dados como este, considere armazenar a cópia autoritária das definições de função como um script SQL em um sistema de controle de revisão como svn ou git, preferencialmente empacotado como uma extensão do PostgreSQL. Consulte extensões de embalagem.