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

Sådan tager du kun backup af funktioner i Postgres

brug pg_getfunctiondef; se systeminformationsfunktioner. pg_getfunctiondef blev tilføjet i PostgreSQL 8.4.

SELECT pg_get_functiondef('proc_name'::regproc);

For at dumpe alle funktioner i et skema kan du forespørge systemtabellerne i pg_catalog; sige, hvis du ville have alt fra 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';

det er trivielt at ændre ovenstående til at sige "fra alle skemaer undtagen dem, der begynder med pg_ " i stedet hvis det er det du ønsker.

I psql du kan dumpe dette til en fil med:

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

For at køre output i en anden DB, brug noget som:

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

Hvis du replikerer funktioner mellem DB'er som denne, skal du dog overveje at gemme den autoritative kopi af funktionsdefinitionerne som et SQL-script i et revisionskontrolsystem som svn eller git, helst pakket som en PostgreSQL-udvidelse. Se pakkeudvidelser.



  1. Eksport af en PostgreSQL-database med phpPgAdmin

  2. Kald en sæt-returnerende funktion med et array-argument flere gange

  3. 7 tips til bedste praksis for PostgreSQL-bulkdataindlæsning

  4. Find poster, hvor join ikke findes