sql >> Databáze >  >> RDS >> PostgreSQL

PostgreSql, extrahujte objekty schématu DDL a oddělte soubor SQL

Pokud jste na klientském počítači, můžete to vložit do SQL skriptu (např. 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;

a zavolejte jej pomocí 2 argumentů:název_schématu a cesta_exportu, například:

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

Tím se vygeneruje skript obsahující všechny příkazy exports pro vaše rutiny plpgsql, např.

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

Poslední krok:spusťte vygenerovaný skript

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

Pro každou proceduru vygeneruje soubor .prc a pro každou funkci soubor .fct. Poznámka:Možná budete muset skript upřesnit, protože v zobrazení pg_proc můžete mít jiný druh funkcí (proKind).




  1. Jak hledat v poli json, které obsahuje pole objektů pomocí Eloquent

  2. mysql:SOURCE chyba 2?

  3. Jak najít zděděné tabulky programově v PostgreSQL?

  4. mysql replikace - slave server na jedné databázi