pg_restore

Nom

pg_restore --  restaure une base de donn�es PostgreSQL � partir d'un fichier d'archive cr�� par pg_dump

Synopsis

pg_restore [option...] [nom_fichier]

Description

pg_restore est un outil pour restaurer une base de donn�es PostgreSQL � partir d'une archive cr��e par pg_dump dans un des formats non textuel. Il lancera les commandes n�cessaires pour reconstruire la base de donn�es dans l'�tat o� elle �tait au moment de sa sauvegarde. Les fichiers d'archive permettent aussi � pg_restore d'�tre s�lectif sur ce qui est restaur� ou m�me de r�ordonner les �l�ments avant d'�tre restaur�. Les fichiers d'archive sont con�us pour �tre portables au travers des architectures.

pg_restore peut op�rer dans deux modes : si un nom de base de donn�es est sp�cifi�, l'archive est restaur�e directement dans la base de donn�es. (Les gros objets peuvent seulement �tre restaur�s en utilisant une connexion directe � la base de donn�es.) Sinon, un script contenant les commandes SQL n�cessaires pour reconstruire la base de donn�es est cr�� (et �crit dans un fichier ou sur la sortie standard), similaire � ceux cr��s par le format en texte plein de pg_dump. Quelques-unes des options contr�lant la sortie du script sont du coup analogues aux options de pg_dump.

De toute �vidence, pg_restore ne peut pas restaurer l'information qui ne se trouve pas dans le fichier d'archive. Par exemple, si l'archive a �t� r�alis�e en utilisant l'option donnant les <<�donn�es sauvegard�es par des commandes INSERT�>>, pg_restore ne sera pas capable de charger les donn�es en utilisant des instructions COPY.

Options

pg_restore accepte les arguments suivant en ligne de commande.

nom_fichier

Sp�cifie l'emplacement du fichier d'archive � restaurer. S'il n'est pas sp�cifi�, l'entr�e standard est utilis�e.

-a
--data-only

Restaure seulement les donn�es, pas le sch�ma (d�finitions des donn�es).

-c
--clean

Nettoie (supprime) les objets de la base de donn�es avant de les cr�er.

-C
--create

Cr�e la base de donn�es avant de la restaurer. (Quand cette option est utilis�e, la base de donn�es nomm�e avec -d est utilis�e seulement pour lancer la commande initiale CREATE DATABASE. Toutes les donn�es sont restaur�es dans le nom de la base de donn�es qui appara�t dans l'archive.)

-d nom_base
--dbname=nom_base

Se connecte � la base de donn�es nom_base et restaure directement dans la base de donn�es.

-f nom_fichier
--file=filename

Sp�cifie le fichier en sortie pour le script g�n�r� ou pour la liste lorsqu'elle est utilis�e avec -l. Par d�faut, il s'agit de la sortie standard.

-F format
--format=format

Sp�cifie le format de l'archive. Il n'est pas n�cessaire de le sp�cifier car pg_restore d�terminera le format automatiquement. Si sp�cifi�, il peut �tre un des suivants :

t

L'archive est une archive tar. Utiliser ce format d'archive permet le r�ordonnancement et/ou l'exclusion des �l�ments du sch�ma au moment de la restauration de la base de donn�es. Il est aussi possible de limiter les donn�es � recharger au moment de la restauration.

c

L'archive est dans le format personnalis� de pg_dump. Ceci est le format le plus flexible dans le fait qu'il permet le r�ordonnancement du chargement des donn�es ainsi que des �l�ments du sch�ma. Ce format est aussi compress� par d�faut.

-i
--ignore-version

Ignore la v�rification de version de la base de donn�es.

-I index
--index=index

Restaure uniquement la d�finition des index nomm�s.

-l
--list

Liste le contenu de l'archive. La sortie de cette op�ration peut �tre utilis�e avec l'option -L pour restreindre et r�ordonner les �l�ments � restaurer.

-L fichier_liste
--use-list=fichier_liste

Restaure seulement les �l�ments dans fichier_liste et dans leur ordre d'apparition dans le fichier. Les lignes peuvent �tre d�plac�es et pourraient aussi �tre comment�es en pla�ant un ; au d�but de la ligne. (Voir ci-dessous pour des exemples.)

-N
--orig-order

Restaure les �l�ments dans l'ordre o� ils ont �t� g�n�r�s au d�part avec pg_dump. Cette option n'a pas d'utilisation pratique connue car pg_dump g�n�re les �l�ments dans l'ordre qui l'arrange, ce qui a peu de chances d'�tre le bon ordre pour les restaurer. (Ce n'est pas l'ordre dans lequel les �l�ments sont list�s dans la table des mati�res de l'archive.) Voir aussi -r.

-o
--oid-order

Restaure les �l�ments dans l'ordre des OID. Cette option a une utilit� limit�e car les OID sont seulement une indication approximative de l'ordre de cr�ation originale. Cette option surcharge -N si les deux sont sp�cifi�s. Voir aussi -r.

-O
--no-owner

Ne pas donner les commandes initialisant les propri�taires des objets pour correspondre � la base de donn�es originale. Par d�faut, pg_restore lance des instructions SET SESSION AUTHORIZATION pour configurer le propri�taire des �l�ments du sch�ma cr��. Ces instructions �choueront sauf si la connexion initiale � la base de donn�es est r�alis�e par un superutilisateur (ou le m�me utilisateur que le propri�taire des objets du script). Avec -O, tout nom d'utilisateur peut �tre utilis� pour la connexion initiale et cet utilisateur sera le propri�taire des objets cr��s.

-P nom_fonction(argtype [, ...])
--function=nom_fonction(argtype [, ...])

Restaure seulement la fonction nomm�e. Faites attention � �peler le nom de la fonction et les arguments exactement comme ils apparaissent dans la table des mati�res du fichier de sauvegarde.

-r
--rearrange

R�arrange les �l�ments par type d'objet (ceci survient apr�s le tri sp�cifi� par -N ou -o, au cas o� ils seraient indiqu�s). Le r�arrangement a pour but de donner les meilleures performances pour la restauration.

Quand aucune des options -N, -o et -r n'apparaisse, pg_restore restaure les �l�ments dans l'ordre o� ils apparaissent dans la table des mati�res de la sauvegarde ou dans l'ordre o� ils apparaissent dans le fichier_liste si -L est sp�cifi�. La combinaison de -o et -r duplique le tri effectu� par pg_dump avant de cr�er la table des mati�res de la sauvegarde. Du coup, il n'est normalement pas n�cessaire de le sp�cifier.

-R
--no-reconnect

Cette option est obsol�te mais est toujours accept�e pour des raisons de compatibilit� ascendante.

-s
--schema-only

Restaure uniquement le sch�ma (d�finition des donn�es), et non pas les donn�es elles-m�me. Les valeurs de s�quence seront r�initialis�es.

-S nom_utilisateur
--superuser=nom_utilisateur

Sp�cifie le nom d'utilisateur du superutilisateur � utiliser pour d�sactiver les d�clencheurs. Ceci est seulement n�cessaire si --disable-triggers est utilis�.

-t table
--table=table

Restaure uniquement la d�finition et/ou les donn�es de la table nomm�e.

-T trigger
--trigger=trigger

Restaure uniquement le d�clencheur nomm�.

-v
--verbose

Sp�cifie le mode verbeux.

-x
--no-privileges
--no-acl

Emp�che la restauration des droits d'acc�s (commandes grant/revoke).

-X use-set-session-authorization
--use-set-session-authorization

Cette option est obsol�te mais est toujours accept�e pour des raisons de compatibilit� ascendante. pg_restore se comporte maintenant toujours de la fa�on pr�c�demment s�lectionn�e par cette option.

-X disable-triggers
--disable-triggers

Cette option est seulement int�ressante lors de l'unique restauration des donn�es. Elle demande � pg_restore d'ex�cuter des commandes pour d�sactiver temporairement les d�clencheurs sur les tables cibles pendant que la donn�e est recharg�e. Utilisez ceci si vous avez des v�rifications d'int�grit� r�f�rentielle sur les tables que vous ne voulez pas appeler lors du rechargement des donn�es.

Actuellement, les commandes �mises pour --disable-triggers doivent �tre ex�cut�es par un superutilisateur. Donc, vous devriez aussi sp�cifier un nom de superutilisateur avec -S ou, de pr�f�rence, lancer pg_restore en tant que superutilisateur PostgreSQL.

pg_restore accepte aussi les arguments suivants en ligne de commande pour les param�tres de connexion :

-h h�te
--host=h�te

Sp�cifie le nom de l'h�te de la machine sur lequel le serveur est en cours d'ex�cution. Si la valeur commence par un slash, elle est utilis�e comme r�pertoire du socket de domaine Unix. La valeur par d�faut est prise dans la variable d'environnement PGHOST, si elle est initialis�e, sinon une connexion socket de domaine Unix est tent�e.

-p port
--port=port

Sp�cifie le port TCP ou l'extension du fichier socket de domaine Unix sur lequel le serveur �coute les connexions. Par d�faut, l'outil utilise la variable d'environnement PGPORT, si elle est configur�e, sinon elle utilise la valeur compil�e.

-U nom_utilisateur

Se connecte en tant que cet utilisateur

-W

Force une demande de mot de passe. Ceci devrait arriver automatiquement si le serveur requiert une authentification par mot de passe.

Environnement

PGHOST
PGPORT
PGUSER

Param�tres de connexion par d�faut

Diagnostiques

Quand une connexion directe � la base de donn�es est sp�cifi�e avec l'option -d, pg_restore ex�cute en interne des instructions SQL. Si vous avez des probl�mes en ex�cutant pg_restore, assurez-vous d'�tre capable de s�lectionner l'information � partir de la base de donn�es utilis�e, par exemple � partir de psql.

Notes

Si votre installation dispose d'ajouts locaux � la base de donn�es template1, faites attention � charger la sortie de pg_restore dans une base de donn�es r�ellement vide ; sinon, vous avez des risques d'obtenir des erreurs d�es aux d�finitions dupliqu�es des objets ajout�s. Pour cr�er une base de donn�es vide sans ajout local, copiez � partir de template0, et non pas de template1, par exemple :

CREATE DATABASE foo WITH TEMPLATE template0;

Les limitations de pg_restore sont d�taill�es ci-dessous.

Voir aussi la documentation de pg_dump pour les d�tails sur les limitations de pg_dump.

Une fois restaur�e, il est conseill� de lancer ANALYZE sur chaque table restaur�e de fa�on � ce que l'optimiseur dispose de statistiques utiles.

Exemples

Pour sauvegarder une base de donn�es appel�e ma_base, contenant des objets larges dans un fichier tar :

$ pg_dump -Ft -b ma_base > base.tar

Pour recharger cette base de donn�es (avec les objets larges) dans une base de donn�es existante appel�e nouvelle_base :

$ pg_restore -d nouvelle_base base.tar

Pour r�ordonner les �l�ments de la base de donn�es, il est tout d'abord n�cessaire de sauvegarder la table des mati�res de l'archive :

$ pg_restore -l archive.fichier > archive.liste

Le fichier de liste consiste en un en-t�te et d'une ligne par �l�ment, par exemple

;
; Archive created at Fri Jul 28 22:28:36 2000
;     dbname: birds
;     TOC Entries: 74
;     Compression: 0
;     Dump Version: 1.4-0
;     Format: CUSTOM
;
;
; Selected TOC Entries:
;
2; 145344 TABLE species postgres
3; 145344 ACL species
4; 145359 TABLE nt_header postgres
5; 145359 ACL nt_header
6; 145402 TABLE species_records postgres
7; 145402 ACL species_records
8; 145416 TABLE ss_old postgres
9; 145416 ACL ss_old
10; 145433 TABLE map_resolutions postgres
11; 145433 ACL map_resolutions
12; 145443 TABLE hs_old postgres
13; 145443 ACL hs_old

Les points virgules commencent un commentaire et les num�ros au d�but des lignes se r�f�rent � l'ID d'archive interne affect�e � chaque �l�ment.

Les lignes dans le fichier peuvent �tre comment�es, supprim�es et r�ordonn�es. Par exemple,

10; 145433 TABLE map_resolutions postgres
;2; 145344 TABLE species postgres
;4; 145359 TABLE nt_header postgres
6; 145402 TABLE species_records postgres
;8; 145416 TABLE ss_old postgres

pourrait �tre utilis� en entr�e de pg_restore et pourrait seulement restaurer les �l�ments 10 et 6 dans cet ordre :

$ pg_restore -L archive.liste archive.fichier

Historique

L'outil pg_restore est d'abord apparu dans PostgreSQL, version 7.1.

Voir aussi

pg_dump, pg_dumpall, psql