PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да направите резервно копие на функции само в Postgres

използвайте pg_getfunctiondef; вижте функциите за системна информация. pg_getfunctiondef беше добавен в PostgreSQL 8.4.

SELECT pg_get_functiondef('proc_name'::regproc);

За да изхвърлите всички функции в схема, можете да направите заявка за системните таблици в pg_catalog; кажете, ако искате всичко от 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';

тривиално е да промените горното, за да кажете "от всички схеми с изключение на тези, започващи с pg_ " вместо това, ако това е, което искате.

В psql можете да изхвърлите това във файл с:

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

За да стартирате изхода в друга DB, използвайте нещо като:

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

Ако репликирате функции между DB като тази, помислете за съхраняване на пълномощното копие на дефинициите на функциите като SQL скрипт в система за контрол на ревизии като svn или git, за предпочитане пакетиран като разширение на PostgreSQL. Вижте разширенията за опаковки.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL 12:Външни ключове и разделени таблици

  2. Автоматично нарастване на PostgreSQL

  3. Използвайте множество конфликт_цели в клауза ON CONFLICT

  4. Отказано е разрешение за връзка

  5. Опреснете материализирания изглед автоматично с помощта на правило или уведомете