PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So erstellen Sie ein Backup von Funktionen nur in Postgres

Verwenden Sie pg_getfunctiondef; siehe Systeminformationsfunktionen. pg_getfunctiondef wurde in PostgreSQL 8.4 hinzugefügt.

SELECT pg_get_functiondef('proc_name'::regproc);

Um alle Funktionen in einem Schema auszugeben, können Sie die Systemtabellen in pg_catalog abfragen; Sagen Sie, ob Sie alles von public wollen :

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';

Es ist trivial, das obige zu ändern, um " von allen Schemas außer denen zu sagen, die mit pg_ beginnen " stattdessen, wenn Sie das möchten.

In psql Sie können dies in eine Datei ausgeben mit:

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

Um die Ausgabe in einer anderen DB auszuführen, verwenden Sie etwas wie:

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

Wenn Sie jedoch Funktionen zwischen Datenbanken wie dieser replizieren, sollten Sie erwägen, die autorisierte Kopie der Funktionsdefinitionen als SQL-Skript in einem Versionskontrollsystem wie svn oder git zu speichern, vorzugsweise als PostgreSQL-Erweiterung gepackt. Siehe Paketerweiterungen.