sử dụng pg_getfunctiondef
; xem các chức năng thông tin hệ thống. pg_getfunctiondef
đã được thêm vào PostgreSQL 8.4.
SELECT pg_get_functiondef('proc_name'::regproc);
Để kết xuất tất cả các chức năng trong một lược đồ, bạn có thể truy vấn các bảng hệ thống trong pg_catalog
; nói nếu bạn muốn 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';
Việc thay đổi nội dung ở trên để nói "từ tất cả các lược đồ ngoại trừ những lược đồ bắt đầu bằng pg_
là điều không cần thiết " thay vào đó nếu đó là những gì bạn muốn.
Trong psql
bạn có thể kết xuất nó vào một tệp với:
psql -At dbname > /path/to/output/file.sql <<"__END__"
... the above SQL ...
__END__
Để chạy đầu ra trong một DB khác, hãy sử dụng một cái gì đó như:
psql -1 -v ON_ERROR_STOP -f /path/to/output/file.sql target_db_name
Tuy nhiên, nếu bạn đang sao chép các hàm giữa các DB như thế này, hãy cân nhắc lưu trữ bản sao có thẩm quyền của các định nghĩa hàm dưới dạng tập lệnh SQL trong hệ thống kiểm soát sửa đổi như svn hoặc git, tốt hơn là được đóng gói dưới dạng phần mở rộng PostgreSQL. Xem phần mở rộng về bao bì.