PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cách sao lưu các chức năng chỉ trong Postgres

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ì.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. chuyển đổi kiểu dữ liệu SET của MySQL thành Postgres

  2. Tạo trình tự theo thứ tự

  3. Cài đặt icu4c phiên bản 63 với Homebrew

  4. Chọn truy vấn có giới hạn bù quá chậm

  5. Createuser:không thể kết nối với cơ sở dữ liệu postgres:FATAL:role tom không tồn tại