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

PostgreSql, trích xuất các đối tượng lược đồ DDL để tách tệp SQL

Nếu bạn đang sử dụng máy khách, bạn có thể đặt điều này trong một tập lệnh SQL (ví dụ:export_plpgsql.sql):

\pset tuples_only on
\pset footer off
\set QUIET on
\pset format unaligned
\set QUIET off

SELECT '\echo ''* Export '||(CASE proKind WHEN 'f' THEN 'Function' ELSE 'Procedure' END)||' : '||proName||''''
       ||chr(10)||'\copy (SELECT pg_get_functiondef('||p.oid||')) TO '''||:'export_path'||'/'||upper(proName)
       ||(CASE proKind WHEN 'f' THEN '.fct' ELSE '.prc' END)||''' WITH CSV;' as export_routine
FROM pg_proc p
WHERE proNamespace = (SELECT oid FROM pg_namespace WHERE nspName = lower(:'schema_name'))
ORDER BY proName;

và gọi nó bằng 2 đối số:schema_name và export_path, ví dụ:

psql -U my_ -d my_db -v schema_name=my_schema -v export_path=C:/temp/export_PG -f export_plpgsql.sql > C:\temp\export_plpgsql.gen.sql

Thao tác này sẽ tạo một tập lệnh chứa tất cả lệnh xuất cho các quy trình plpgsql của bạn, ví dụ:

\copy (SELECT pg_get_functiondef(51296)) TO 'C:/temp/export_PG/my_procedure.prc' WITH CSV;

Bước cuối cùng:chạy tập lệnh đã tạo

psql -U my_ -d my_db -f C:\temp\export_plpgsql.gen.sql

Nó sẽ tạo tệp .prc cho mỗi thủ tục và tệp .fct cho mỗi chức năng.NB:Bạn có thể phải tinh chỉnh tập lệnh vì bạn có thể có các loại chức năng khác (proKind) trong chế độ xem pg_proc.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xác thực cơ sở dữ liệu CAS không hoạt động

  2. Thực thi Truy vấn dựa trên JSON được lưu trữ bên trong cột

  3. Làm thế nào để tạo tìm kiếm mờ đơn giản chỉ với PostgreSQL?

  4. 3 cách liệt kê tất cả các thủ tục được lưu trữ trong cơ sở dữ liệu PostgreSQL

  5. Công đoàn postgres có đảm bảo thứ tự thực hiện khi gọi các hàm có tác dụng phụ không?