Chcę wykonać kopie zapasowe wszystkich funkcji w mojej bazie danych Postgres.Jak wykonać kopię zapasową funkcji tylko w Postgresie?Jak wykonać kopię zapasową funkcji tylko w Postgresie
Odpowiedz
użyj pg_getfunctiondef
; patrz system information functions. pg_getfunctiondef
został dodany w PostgreSQL 8.4.
SELECT pg_get_functiondef('proc_name'::regproc);
Aby zrzucić wszystkie funkcje w schemacie można wyszukać tabele systemowe w pg_catalog
; powiedzieć, jeśli chciał wszystko od 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';
to trywialne, aby zmienić powyższe powiedzieć „od wszystkich schematów wyjątkiem poczynając pg_
” zamiast Jeśli to, co chcesz.
W psql
można zrzucić to do pliku z:
psql -At dbname > /path/to/output/file.sql <<"__END__"
... the above SQL ...
__END__
Aby uruchomić produkcję w innym DB, użyć czegoś takiego:
psql -1 -v ON_ERROR_STOP -f /path/to/output/file.sql target_db_name
Jeśli funkcje replikacji pomiędzy DB jak to jednak rozważa przechowywanie autorytatywnej kopii definicji funkcji jako skryptu SQL w systemie kontroli wersji, takim jak svn lub git, najlepiej w postaci rozszerzenia PostgreSQL. Zobacz packaging extensions.
Nie można powiedzieć pg_dump
tylko zrzutu funkcji. Można jednak wykonać zrzut bez danych (-s
) i odfiltrować go podczas przywracania. Uwaga: część -Fc
: spowoduje utworzenie pliku odpowiedniego dla pg_restore
.
Pierwszy wziąć zrzut:
pg_dump -U username -Fc -s -f dump_test your_database
następnie utworzyć listę funkcji:
pg_restore -l dump_test | grep FUNCTION > function_list
i wreszcie przywrócić je (-L
określa plik utworzonej listy powyżej):
pg_restore -U username -d your_other_database -L function_list dump_test
Być może pierwsze dwie komendy można zredukować do 'pg_dump -U nazwa_użytkownika -s baza danych | grep FUNCTION> function_list' – Minutis
@Minutis To nie zadziała, chyba że definicje funkcji są _jednostkowymi. – dezso
Po prostu wypróbowałem to sam i mogę potwierdzić, że to rozwiązanie w moim pierwszym komentarzu NIE jest poprawne. – Minutis
- 1. Jak wykonać kopię zapasową menedżera repozytorium nexus
- 2. Jak wykonać kopię zapasową całej aplikacji w systemie Android?
- 3. Jak wykonać kopię zapasową i przywrócić ustawienia Delphi?
- 4. Jak mogę wykonać kopię zapasową lub zsynchronizować wiadro Amazon S3?
- 5. Nowa baza danych Firewall - Jak wykonać kopię zapasową
- 6. Jak najprościej wykonać kopię zapasową bazy danych MongoDB GridFS?
- 7. Jak zrzucić/wykonać kopię zapasową indeksu Solr do pliku?
- 8. Jak wykonać kopię zapasową i przywrócić repozytorium SVN?
- 9. Jak wykonać kopię zapasową zadań agenta SQL Server?
- 10. Jak wykonać kopię zapasową/przywrócić obraz dokowany do wdrożenia?
- 11. Jak utworzyć kopię zapasową zawartości skrytki git?
- 12. Co powinienem wykonać kopię zapasową w ColdFusion 9?
- 13. Jak zrobić przyrostową kopię zapasową w MySQL
- 14. Czy można wykonać kopię zapasową Bazy danych Firebase DB?
- 15. Czy mogę wykonać kopię zapasową fizycznego telefonu i przywrócić emulator?
- 16. Jak wykonać kopię zapasową niektórych tabel za pomocą danych i niektórych tabel tylko schemat PostgreSQL
- 17. Jak wykonać kopię zapasową i przywrócić bazę danych jako kopię na tym samym serwerze?
- 18. Przywróć kopię zapasową Odmowa dostępu
- 19. Jak wykonać kopię zapasową instancji bazy danych Amazon RDS MS SQL Server i przywrócić lokalnie
- 20. Jak wykonać kopię zapasową bazy danych za pomocą 100 wierszy w każdej tabeli?
- 21. MATLAB Historia Polecenie: jak zapisać kopię zapasową istniejącej historii
- 22. Jak wykonać pełną kopię zapasową bazy danych mysql przy użyciu narzędzia wiersza poleceń mysqldump
- 23. serwer sql przywracający kopię zapasową błędu
- 24. Jak programowo utworzyć kopię zapasową bazy danych Sql w C#
- 25. Jak utworzyć kopię zapasową pojedynczej tabeli w bazie danych postgres?
- 26. Jak mogę bezpiecznie utworzyć kopię zapasową ogromnej bazy danych?
- 27. Jak wykonać kopię zapasową linii po nowym wierszu przesłanym przez użytkownika? Java
- 28. Jak wykonać kopię zapasową za pomocą programu s3cmd, ignorując wiele katalogów i typów plików
- 29. Linux Wykonaj kopię zapasową MySQL do ścieżki czasowej od Webmin
- 30. Eksportuj tylko widoki w Postgresie
Również chcę przywrócić te funkcje do innego db.How mogę to zrobić?. Funkcje tylko trzeba przywrócić – vmb
@vmb Dane wyjściowe są definicje funkcji SQL, więc potokuj je do psql. Zobacz zaktualizowaną odpowiedź. Co więcej, utwórz rozszerzenie i spakuj je w nim. –
Należy zauważyć, że 'pg_get_functiondef ('proc_name' :: regproc)' ** NIE ** zrzuca przywilejów funkcji (instrukcje 'GRANT' i' REVOKE'), które mogą być czasami uważane za część definicji funkcji. – NumberFour