L'opération est particulièrement délicate, notamment avec POSTGIS : il n'est pas impossible que vous soyez obligé de reprendre une partie des scripts, en supprimant des contraintes POSTGIS (bascule de la version 1 de Posgtis vers la version 2).
Principe général :
La sauvegarde s'effectue avec pg_dump
, la restauration avec pg_restore
ou psql
(selon le format des fichiers).
pg_dump -Fc -b -O -x base > fichier.db
Dans ce cas de figure, les droits ne sont en principe pas transférés (-O et -x) : vous devrez les repositionner ensuite.
Pour restaurer :
dans psq:
create database base;
puis, en ligne de commande :
pg_restore -d base -Fc fichier.db
La structure des tables est sauvegardée en fichier texte, pour pouvoir être adaptée le cas échéant (des problèmes peuvent survenir sur les contraintes d'intégrité POSTGIS, soit sur les types d'objets, soit sur les SRID : il vous faudra supprimer ces contraintes avant de pouvoir importer vos données) :
pg_dump -s -O -x base > base_structure.sql
Une fois la base de données créée, pour exécuter le script :
psql -f base_structure.sql base
Si vous avez un souci pour intégrer une table (structure créée), vous avez intérêt à gérer l'import manuellement (problème rencontré avec une table contenant deux colonnes POSTGIS). Pour cela :
pg_dump -Fc -a -t table > base_table.db
pg_restore -Fc -a -d base -t table base_table.db
Pour donner les droits, consultez les pages : changer le propriétaire (owner) d'une base postgresql et Donner les droits d'accès à un schéma postgresql