Voglio fare il backup di tutte le funzioni nel mio database postgres. Come fare il backup delle funzioni solo in Postgres?Come eseguire il backup delle funzioni solo in Postgres
risposta
utilizzare pg_getfunctiondef
; vedi system information functions. pg_getfunctiondef
è stato aggiunto in PostgreSQL 8.4.
SELECT pg_get_functiondef('proc_name'::regproc);
di scaricare tutte le funzioni in uno schema è possibile interrogare le tabelle di sistema in pg_catalog
; dire se si voleva tutto da 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';
è banale per cambiare il sopra per dire "da tutti gli schemi ad eccezione di quelli che iniziano con pg_
" invece se è quello che vuoi.
In psql
si può scaricare a un file con:
psql -At dbname > /path/to/output/file.sql <<"__END__"
... the above SQL ...
__END__
Per eseguire l'output in un altro DB, usare qualcosa come:
psql -1 -v ON_ERROR_STOP -f /path/to/output/file.sql target_db_name
Se stai replicare funzioni tra DB come questo, tuttavia, considera l'archiviazione della copia autenticativa delle definizioni di funzione come uno script SQL in un sistema di controllo di revisione come svn o git, preferibilmente impacchettato come estensione PostgreSQL. Vedi packaging extensions.
Non è possibile indicare a pg_dump
di scaricare solo le funzioni. Tuttavia, è possibile creare una discarica senza dati (-s
) e filtrarla al momento del ripristino. Nota la parte -Fc
: questo produrrà un file adatto per pg_restore
.
togli prima la discarica:
pg_dump -U username -Fc -s -f dump_test your_database
quindi creare un elenco delle funzioni:
pg_restore -l dump_test | grep FUNCTION > function_list
E infine ripristinarli (-L
specifica il file di elenco creato in precedenza):
pg_restore -U username -d your_other_database -L function_list dump_test
Forse i primi due comandi potrebbero essere ridotti a 'pg_dump -U nomeutente -s database | grep FUNCTION> function_list' – Minutis
@Minutis Che non funzionerà, a meno che le definizioni delle funzioni non siano _all_ one-liner. – dezso
Ho appena provato questo e posso confermare che la soluzione nel mio primo commento NON è corretta. – Minutis
- 1. Backup dati Android 2.2: come eseguire il backup di DefaultSharedPreferences?
- 2. Come eseguire il backup del server Git?
- 3. Come eseguire il backup del database SQLite?
- 4. Come eseguire Postgres localmente
- 5. Composer/PSR - Come eseguire il caricamento automatico delle funzioni?
- 6. Come eseguire il backup di stored procedure in MySQL
- 7. iOS: non eseguire il backup dell'attributo?
- 8. Come eseguire il backup dell'intera applicazione in Android?
- 9. Come eseguire il backup dei repository in Plastic SCM?
- 10. Come eseguire il backup dei processi di SQL Server Agent?
- 11. Come eseguire il backup e il ripristino del repository SVN?
- 12. Come eseguire il backup di un database Solr?
- 13. Esporta solo visualizzazioni in Postgres
- 14. File MDF di SQL Server - Come eseguire il backup
- 15. Devo eseguire il backup della cartella ".npm" e ".node-gyp"?
- 16. Come eseguire il backup delle tabelle e dei BLOB di Azure
- 17. Come eseguire il backup di un gestore di repository nexus
- 18. Come faccio a eseguire il backup del mio database PostgreSQL con Cron?
- 19. Qual è la libreria appropriata per il collegamento delle funzioni C di Postgres sul lato server
- 20. Come eseguire il backup di un database filestream?
- 21. Come eseguire il backup del database MySQL su Windows?
- 22. Come eseguire l'ottimizzazione discreta delle funzioni su matrici?
- 23. Come eseguire il backup completo del database mysql utilizzando l'utilità della riga di comando mysqldump
- 24. Cosa devo eseguire il backup in ColdFusion 9?
- 25. Come eseguire contemporaneamente due funzioni
- 26. ottiene il codice delle funzioni in Matlab?
- 27. Come eseguire il debug delle funzioni di cuda thrust in Visual Studio 2010 con risoluzione parallela
- 28. come eseguire file .sql nel database postgres
- 29. Come posso utilizzare rsync per eseguire il backup dei file modificati in un periodo recente?
- 30. Utilizzo di rsync per eseguire il backup di MySQL
Anche io voglio ripristinare queste funzioni a un altro db. Come posso fare ciò? Funzioni solo bisogno di ripristinare – vmb
@vmb L'output è definizioni di funzione SQL, quindi li pipa in psql. Vedi risposta aggiornata. Ancora meglio, crea un'estensione e inseriscili in essa. –
Si noti che 'pg_get_functiondef ('proc_name' :: regproc)' ** NON esegue ** il dump dei privilegi della funzione (istruzioni 'GRANT' e' REVOKE') che possono essere talvolta considerati come parte della definizione della funzione. – NumberFour