seguridad procedimientos incremental funciones español diaria datos copia consultas con bases administración sql postgresql postgresql-9.1

sql - procedimientos - Cómo realizar copias de seguridad de funciones solo en Postgres



funciones y procedimientos en postgresql (2)

No puedes decirle a pg_dump que vuelque solo funciones. Sin embargo, puede hacer un volcado sin datos ( -s ) y filtrarlo en la restauración. Tenga en cuenta la parte -Fc : esto producirá un archivo adecuado para pg_restore .

Primero toma el basurero

pg_dump -U username -Fc -s -f dump_test your_database

Luego crea una lista de las funciones:

pg_restore -l dump_test | grep FUNCTION > function_list

Y finalmente restaurarlos ( -L especifica el archivo de lista creado arriba):

pg_restore -U username -d your_other_database -L function_list dump_test

Quiero realizar una copia de seguridad de todas las funciones en mi base de datos de postgres. ¿Cómo realizar una copia de seguridad de las funciones solo en Postgres?


utilizar pg_getfunctiondef ; Ver funciones de información del sistema . pg_getfunctiondef fue agregado en PostgreSQL 8.4.

SELECT pg_get_functiondef(''proc_name''::regproc);

Para volcar todas las funciones en un esquema, puede consultar las tablas del sistema en pg_catalog ; Di si querías todo de 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'';

es trivial cambiar lo anterior para decir "de todos los esquemas, excepto los que comienzan con pg_ ", si eso es lo que quiere.

En psql puedes volcar esto a un archivo con:

psql -At dbname > /path/to/output/file.sql <<"__END__" ... the above SQL ... __END__

Para ejecutar la salida en otro DB, use algo como:

psql -1 -v ON_ERROR_STOP -f /path/to/output/file.sql target_db_name

Sin embargo, si está replicando funciones entre bases de datos como esta, considere almacenar la copia autorativa de las definiciones de funciones como un script SQL en un sistema de control de revisiones como svn o git, preferiblemente empaquetado como una extensión PostgreSQL. Ver extensiones de embalaje .