sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man tar backup av funktioner endast i Postgres

använd pg_getfunctiondef; se systeminformationsfunktioner. pg_getfunctiondef lades till i PostgreSQL 8.4.

SELECT pg_get_functiondef('proc_name'::regproc);

För att dumpa alla funktioner i ett schema kan du fråga systemtabellerna i pg_catalog; säg om du ville ha allt från 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 är trivialt att ändra ovanstående till att säga "från alla scheman utom de som börjar med pg_ " istället om det är vad du vill.

I psql du kan dumpa detta till en fil med:

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

För att köra utdata i en annan DB, använd något som:

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

Om du replikerar funktioner mellan DB:er som denna, överväg dock att lagra den auktorativa kopian av funktionsdefinitionerna som ett SQL-skript i ett revisionskontrollsystem som svn eller git, helst paketerat som en PostgreSQL-tillägg. Se förpackningstillägg.



  1. Android Sqlite prestanda

  2. Hur man kör Skapa tabell DDL med UTFÖR Omedelbart i Oracle Database

  3. java, korrekt användning av statiska variabler för att förhindra dödläge - Synkronisering

  4. Returnerar den "sista" raden i varje "grupp efter" i MySQL