PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSql, извлича DDL обекти от схемата в отделен SQL файл

Ако сте на клиентската машина, можете да поставите това в SQL скрипт (напр. 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;

и го извикайте с помощта на 2 аргумента:schema_name и export_path, например:

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

Това ще генерира скрипт, съдържащ всички команди за експортиране за вашите plpgsql съчетания, напр.

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

Последна стъпка:стартирайте генерирания скрипт

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

Той ще генерира .prc файл за всяка процедура и .fct файл за всяка функция. NB:Може да се наложи да прецизирате скрипта, тъй като можете да имате друг вид функции (proKind) в изглед 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. ruby sequel gem - как да правите заявки за масиви с разширението pg_array

  2. Сортиране по колона ASC, но първо NULL стойности?

  3. Заявка за получаване на последните разговори за входящата кутия на потребителя

  4. ГРЕШКА:кешираният план не трябва да променя типа резултат при смесване на DDL с SELECT чрез JDBC

  5. Как да увеличите пропускателната способност на връзката за pgbouncer?