PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come eseguire il backup delle funzioni solo in Postgres

usa pg_getfunctiondef; vedere le funzioni delle informazioni di sistema. pg_getfunctiondef è stato aggiunto in PostgreSQL 8.4.

SELECT pg_get_functiondef('proc_name'::regproc);

Per eseguire il dump di tutte le funzioni in uno schema puoi interrogare le tabelle di sistema in pg_catalog; dì se volevi tutto da 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';

è banale cambiare quanto sopra per dire "da tutti gli schemi tranne quelli che iniziano con pg_ " invece se è quello che vuoi.

In psql puoi scaricarlo in un file con:

psql -At dbname > /path/to/output/file.sql <<"__END__"
... the above SQL ...
__END__

Per eseguire l'output in un altro DB, usa qualcosa come:

psql -1 -v ON_ERROR_STOP -f /path/to/output/file.sql target_db_name

Se stai replicando funzioni tra DB come questo, tuttavia, considera di archiviare la copia autorevole delle definizioni delle funzioni come uno script SQL in un sistema di controllo di revisione come svn o git, preferibilmente impacchettato come estensione PostgreSQL. Vedi le estensioni della confezione.