Tôi muốn sao lưu tất cả các chức năng trong cơ sở dữ liệu postgres của tôi. Làm thế nào để sao lưu các chức năng chỉ trong Postgres?Làm thế nào để sao lưu các chức năng chỉ trong Postgres
Trả lời
sử dụng pg_getfunctiondef
; xem system information functions. pg_getfunctiondef
đã được thêm vào trong PostgreSQL 8.4.
SELECT pg_get_functiondef('proc_name'::regproc);
Để đổ tất cả các hàm trong lược đồ, bạn có thể truy vấn bảng hệ thống trong pg_catalog
; nói nếu bạn muốn tất cả mọi thứ từ 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';
nó tầm thường để thay đổi ở trên để nói "từ khắp nơi schemas trừ bắt đầu với pg_
" thay vì nếu đó là những gì bạn muốn.
Trong psql
bạn có thể đổ này vào một tập tin với:
psql -At dbname > /path/to/output/file.sql <<"__END__"
... the above SQL ...
__END__
Để chạy đầu ra trong một DB, sử dụng một cái gì đó như:
psql -1 -v ON_ERROR_STOP -f /path/to/output/file.sql target_db_name
Nếu bạn đang sao chép chức năng giữa DBS như điều này, tuy nhiên, hãy xem xét lưu trữ bản sao có thẩm quyền của các định nghĩa hàm như một kịch bản lệnh SQL trong một hệ thống kiểm soát sửa đổi như svn hoặc git, tốt hơn là đóng gói như là một phần mở rộng PostgreSQL. Xem packaging extensions.
Bạn không thể yêu cầu pg_dump
chỉ đổ các chức năng. Tuy nhiên, bạn có thể tạo một bãi chứa không có dữ liệu (-s
) và lọc nó trên khôi phục. Lưu ý phần -Fc
: điều này sẽ tạo một tệp phù hợp cho pg_restore
.
Đầu tiên lấy bãi:
pg_dump -U username -Fc -s -f dump_test your_database
Sau đó tạo một danh sách các chức năng:
pg_restore -l dump_test | grep FUNCTION > function_list
Và cuối cùng khôi phục chúng (-L
xác định tập tin danh sách đã tạo ở trên):
pg_restore -U username -d your_other_database -L function_list dump_test
Có thể hai lệnh đầu tiên có thể được giảm xuống thành cơ sở dữ liệu 'pg_dump -U username -s | grep FUNCTION> function_list' – Minutis
@Minutis Điều đó sẽ không hoạt động, trừ khi định nghĩa hàm là _all_ một lớp lót. – dezso
Chỉ cần cố gắng này bản thân mình và có thể xác nhận rằng giải pháp trong bình luận đầu tiên của tôi là không chính xác. – Minutis
- 1. Rails Chỉ số chức năng Postgres
- 2. Chức năng kích hoạt Postgres
- 3. Làm thế nào để lưu tất cả các chức năng tôi đã nhập trong LispBox/Slime?
- 4. to_char (số) chức năng trong postgres
- 5. Tại sao chức năng Clojure chỉ bao gồm các cuộc gọi chức năng lười biếng?
- 6. Chức năng truy vấn động Postgres
- 7. chức năng riêng biệt (không chọn) trong postgres
- 8. Làm thế nào để unimport một chức năng trong perl?
- 9. Làm thế nào để sử dụng phạm vi chức năng lưu trữ tải trong ExtJS
- 10. Làm thế nào để thực hiện một "chức năng timeout" trong Javascript - không chỉ là 'setTimeout'
- 11. Làm thế nào để "tên" một truy vấn trong postgres
- 12. Làm thế nào để thực hiện chức năng ajax onbeforeunload?
- 13. Làm thế nào để chuyển đổi một địa chỉ chức năng để một biểu tượng
- 14. Làm thế nào để kích hoạt một chức năng một lần, và chỉ một lần ...?
- 15. Python làm thế nào để thoát khỏi chức năng chính
- 16. Làm thế nào để thêm padding để scrollTop() chức năng
- 17. Làm thế nào để sao lưu ArrayList trong Java?
- 18. Làm thế nào để có được chỉ phần tử con trực tiếp bằng chức năng jQuery
- 19. Chỉ xuất các dạng xem trong Postgres
- 20. Postgres chức năng quay trở lại bảng không trả lại dữ liệu trong các cột
- 21. Làm thế nào để sao chép Postgres bỏ qua dòng đầu tiên của tệp txt lớn
- 22. Làm cách nào để truy cập chức năng bên trong một chức năng?
- 23. Làm thế nào để timeout chức năng PowerShell gọi
- 24. Làm thế nào để tự động chỉ định loại danh sách <> chức năng?
- 25. Postgres - Chức năng trả về giao điểm của 2 ARRAY?
- 26. Làm thế nào để sắp xếp bảng sử dụng chức năng/phương trình chỉ
- 27. Làm thế nào để ghi đè lên các chức năng từ lớp String trong C#
- 28. Underscore.js: làm thế nào để tùy chỉnh chức năng chuỗi
- 29. Làm thế nào để đạt được chức năng INotifyPropertyChanged cho các giá trị trong một bool []?
- 30. nơi lưu trữ các chức năng trợ giúp?
Ngoài ra tôi muốn khôi phục các chức năng này để db.Bow khác tôi có thể làm điều đó ?? Chức năng chỉ cần khôi phục lại – vmb
@vmb Đầu ra là định nghĩa hàm SQL, do đó, ống chúng vào psql. Xem câu trả lời cập nhật. Thậm chí tốt hơn, tạo một phần mở rộng và gói chúng trong đó. –
Cần lưu ý rằng 'pg_get_functiondef ('proc_name' :: regproc)' ** KHÔNG ** bỏ các đặc quyền của hàm (các câu lệnh 'GRANT' và' REVOKE') đôi khi có thể được coi là một phần của định nghĩa hàm. – NumberFour