Il s'agit de la commande pg_restore qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
pg_restore - restaure une base de données PostgreSQL à partir d'un fichier archive créé par pg_dump
SYNOPSIS
pg_restore [option-connexion...] [option...] [nom de fichier]
DESCRIPTION
pg_restore est un utilitaire pour restaurer une base de données PostgreSQL à partir d'une archive créée par
pg_dump(1) dans l'un des formats non texte brut. Il émettra les commandes nécessaires pour
reconstruire la base de données dans l'état où elle se trouvait au moment de son enregistrement. Les archives
les fichiers permettent également à pg_restore d'être sélectif sur ce qui est restauré, ou même de réorganiser le
éléments avant d'être restaurés. Les fichiers d'archive sont conçus pour être portables à travers
architectures.
pg_restore peut fonctionner dans deux modes. Si un nom de base de données est spécifié, pg_restore se connecte
à cette base de données et restaure le contenu de l'archive directement dans la base de données. Sinon, un
un script contenant les commandes SQL nécessaires pour reconstruire la base de données est créé et
écrit dans un fichier ou une sortie standard. Cette sortie de script est équivalente au texte brut
format de sortie de pg_dump. Certaines des options contrôlant la sortie sont donc
analogue aux options de pg_dump.
De toute évidence, pg_restore ne peut pas restaurer les informations qui ne sont pas présentes dans le fichier d'archive.
Par exemple, si l'archive a été réalisée en utilisant le "dump data as INSERT l'option "commandes",
pg_restore ne pourra pas charger les données en utilisant COPY Déclarations.
OPTIONS
pg_restore accepte les arguments de ligne de commande suivants.
nom de fichier
Spécifie l'emplacement du fichier d'archive (ou répertoire, pour un format de répertoire
archive) à restaurer. Si elle n'est pas spécifiée, l'entrée standard est utilisée.
-a
--données uniquement
Restaurez uniquement les données, pas le schéma (définitions de données). Données de table, objets volumineux,
et les valeurs de séquence sont restaurées, si elles sont présentes dans l'archive.
Cette option est similaire, mais pour des raisons historiques non identiques, à spécifier
--section=données.
-c
--nettoyer
Nettoyez (supprimez) les objets de la base de données avant de les recréer. (Sauf si --if-existe est utilisé,
cela pourrait générer des messages d'erreur inoffensifs, si des objets n'étaient pas présents dans
la base de données de destination.)
-C
--créer
Créez la base de données avant de la restaurer. Si --nettoyer est également spécifié, drop et
recréez la base de données cible avant de vous y connecter.
Lorsque cette option est utilisée, la base de données nommée avec -d est utilisé uniquement pour émettre l'initiale
GOUTTE BASE DE DONNÉES et CREATE BASE DE DONNÉES commandes. Toutes les données sont restaurées dans la base de données
nom qui apparaît dans l'archive.
-d dbname
--nombd=dbname
Se connecter à la base de données dbname et restaurer directement dans la base de données.
-e
--sortie en cas d'erreur
Quittez si une erreur est rencontrée lors de l'envoi de commandes SQL à la base de données. Les
le défaut est de continuer et d'afficher un décompte des erreurs à la fin de la restauration.
-f nom de fichier
--fichier=nom de fichier
Spécifiez le fichier de sortie pour le script généré ou pour la liste lorsqu'il est utilisé avec -l.
La valeur par défaut est la sortie standard.
-F le format
--format=le format
Spécifiez le format de l'archive. Il n'est pas nécessaire de spécifier le format, car
pg_restore déterminera automatiquement le format. Si spécifié, il peut être l'un des
Suivante à la suite:
c
Customiser
L'archive est au format personnalisé de pg_dump.
d
annuaire
L'archive est une archive de répertoire.
t
goudron
L'archive est un goudron archiver.
-I indice
--index=indice
Restaurer la définition de l'index nommé uniquement. Plusieurs index peuvent être spécifiés avec
plusieurs -I interrupteurs.
-j nombre-d'emplois
--emplois=nombre-d'emplois
Exécutez les parties les plus chronophages de pg_restore - celles qui chargent les données, créent
index ou créer des contraintes — en utilisant plusieurs tâches simultanées. Cette option peut
réduire considérablement le temps de restauration d'une grande base de données sur un serveur s'exécutant sur un
machine multiprocesseur.
Chaque tâche est un processus ou un thread, selon le système d'exploitation, et utilise un
connexion séparée au serveur.
La valeur optimale de cette option dépend de la configuration matérielle du serveur, du
client et du réseau. Les facteurs incluent le nombre de cœurs de processeur et le disque
mettre en place. Un bon point de départ est le nombre de cœurs de processeur sur le serveur, mais les valeurs
plus grand que cela peut également conduire à des temps de restauration plus rapides dans de nombreux cas. Bien sûr,
des valeurs trop élevées entraîneront une diminution des performances en raison du thrashing.
Seuls les formats d'archive personnalisés et de répertoire sont pris en charge avec cette option. Les
l'entrée doit être un fichier ou un répertoire normal (pas, par exemple, un tube). Cette option est
ignoré lors de l'émission d'un script plutôt que de se connecter directement à un serveur de base de données.
De plus, plusieurs tâches ne peuvent pas être utilisées avec l'option --transaction unique.
-l
--liste
Répertoriez le contenu de l'archive. La sortie de cette opération peut être utilisée comme entrée pour
le -L option. Notez que si les commutateurs de filtrage tels que -n or -t sont utilisés avec -l, Ils
limitera les éléments répertoriés.
-L fichier-liste
--use-list=fichier-liste
Restaurer uniquement les éléments d'archive répertoriés dans fichier-liste, et les restaurer dans
l'ordre dans lequel ils apparaissent dans le fichier. Notez que si des commutateurs de filtrage tels que -n or -t
sont utilisés avec -L, ils restreindront davantage les éléments restaurés.
fichier-liste est normalement créé en éditant la sortie d'un précédent -l opération. Lignes
peut être déplacé ou supprimé, et peut également être commenté en plaçant un point-virgule (;) à
le début de la ligne. Voir ci-dessous pour des exemples.
-n namespace
--schéma=schéma
Restaurer uniquement les objets qui se trouvent dans le schéma nommé. Plusieurs schémas peuvent être spécifiés
avec plusieurs -n commutateurs. Ceci peut être combiné avec le -t option pour restaurer juste un
tableau spécifique.
-O
--pas de propriétaire
N'affichez pas de commandes pour définir la propriété des objets afin qu'ils correspondent à la base de données d'origine. Par
défaut, problèmes de pg_restore ALTER PROPRIÉTAIRE or SET SESSION AUTORISATION déclarations à définir
propriété des éléments de schéma créés. Ces déclarations échoueront à moins que le premier
la connexion à la base de données est effectuée par un superutilisateur (ou le même utilisateur qui possède tous les
les objets dans le script). Avec -O, n'importe quel nom d'utilisateur peut être utilisé pour l'initiale
connexion, et cet utilisateur possédera tous les objets créés.
-P nom-fonction(typeargument [, ...])
--fonction=nom-fonction(typeargument [, ...])
Restaurez la fonction nommée uniquement. Attention à bien épeler le nom de la fonction et les arguments
exactement comme ils apparaissent dans la table des matières du fichier de vidage. Plusieurs fonctions peuvent être
spécifié avec plusieurs -P interrupteurs.
-R
--pas de reconnexion
Cette option est obsolète mais toujours acceptée pour la rétrocompatibilité.
-s
--schéma uniquement
Restaurez uniquement le schéma (définitions de données), pas les données, dans la mesure où ce schéma
les entrées sont présentes dans l'archive.
Cette option est l'inverse de --données uniquement. C'est similaire à, mais pour l'historique
raisons différentes de, en précisant --section=pré-données --section=post-données.
(Ne pas confondre avec le --schéma option, qui utilise le mot « schéma » dans un
sens différent.)
-S Nom d'utilisateur
--superutilisateur=Nom d'utilisateur
Spécifiez le nom d'utilisateur superutilisateur à utiliser lors de la désactivation des déclencheurs. Ceci n'est pertinent que
if --disable-triggers est utilisé.
-t table
--table=table
Restaurer la définition et/ou les données de la table nommée uniquement. Plusieurs tables peuvent être spécifiées
avec plusieurs -t commutateurs. Ceci peut être combiné avec le -n possibilité de spécifier un
schéma.
-T déclencher
--trigger=déclencher
Restaurer le déclencheur nommé uniquement. Plusieurs déclencheurs peuvent être spécifiés avec plusieurs -T
interrupteurs.
-v
--verbeux
Spécifie le mode détaillé.
-V
--version
Imprimez la version de pg_restore et quittez.
-x
--pas de privilèges
--no-acl
Empêcher la restauration des privilèges d'accès (commandes d'octroi/révocation).
-1
--transaction unique
Exécutez la restauration en une seule transaction (c'est-à-dire enveloppez les commandes émises dans
COMMENCER/COMMETTRE). Cela garantit que toutes les commandes se terminent avec succès, ou qu'aucune
les modifications sont appliquées. Cette option implique --sortie en cas d'erreur.
--disable-triggers
Cette option n'est pertinente que lors de l'exécution d'une restauration de données uniquement. Il instruit
pg_restore pour exécuter des commandes pour désactiver temporairement les déclencheurs sur les tables cibles
pendant que les données sont rechargées. Utilisez ceci si vous avez des contrôles d'intégrité référentielle ou d'autres
déclencheurs sur les tables que vous ne souhaitez pas appeler lors du rechargement des données.
Actuellement, les commandes émises pour --disable-triggers doit être fait en tant que superutilisateur. Donc
vous devez également spécifier un nom de superutilisateur avec -S ou, de préférence, exécutez pg_restore en tant que
Superutilisateur PostgreSQL.
--enable-ligne-sécurité
Cette option n'est pertinente que lors de la restauration du contenu d'une table qui a une ligne
Sécurité. Par défaut, pg_restore désactivera row_security, pour s'assurer que toutes les données
est restauré dans la table. Si l'utilisateur n'a pas les privilèges suffisants pour contourner
sécurité des lignes, une erreur est générée. Ce paramètre demande à pg_restore de définir
row_security à on, permettant à l'utilisateur d'essayer de restaurer le contenu de
la table avec la sécurité des lignes activée. Cela peut toujours échouer si l'utilisateur n'a pas
la droite pour insérer les lignes du dump dans la table.
Notez que cette option nécessite actuellement également que le dump soit dans INSERT format, comme COPY À
ne prend pas en charge la sécurité des lignes.
--if-existe
Utiliser des commandes conditionnelles (c'est-à-dire ajouter une clause IF EXISTS) lors du nettoyage de la base de données
objets. Cette option n'est valide que si --nettoyer est également précisé.
--no-data-for-failed-tables
Par défaut, les données de la table sont restaurées même si la commande de création de la table a échoué
(par exemple, parce qu'il existe déjà). Avec cette option, les données d'une telle table sont ignorées.
Ce comportement est utile si la base de données cible contient déjà la table souhaitée
Contenu. Par exemple, des tables auxiliaires pour les extensions PostgreSQL telles que PostGIS
peut-être déjà chargé dans la base de données cible ; la spécification de cette option empêche
données en double ou obsolètes d'y être chargées.
Cette option n'est efficace que lors de la restauration directement dans une base de données, pas lorsque
produire une sortie de script SQL.
--no-étiquettes-de-sécurité
N'émettez pas de commandes pour restaurer les étiquettes de sécurité, même si l'archive les contient.
--pas d'espaces de table
N'émettez pas de commandes pour sélectionner des tablespaces. Avec cette option, tous les objets seront
créé dans n'importe quel tablespace est la valeur par défaut lors de la restauration.
--section=Nom de la section
Ne restaurez que la section nommée. Le nom de la section peut être pré-données, données,, ou post-données.
Cette option peut être spécifiée plusieurs fois pour sélectionner plusieurs sections. Le défaut
est de restaurer toutes les sections.
La section de données contient des données de table réelles ainsi que des définitions d'objets volumineux.
Les éléments de post-données consistent en des définitions d'index, de déclencheurs, de règles et de contraintes
autres que les contraintes de contrôle validées. Les éléments de pré-données se composent de toutes les autres données
éléments de définition.
--use-set-session-autorisation
Sortie standard SQL SET SESSION AUTORISATION commandes au lieu de ALTER PROPRIÉTAIRE commandes
pour déterminer la propriété de l'objet. Cela rend le vidage plus compatible avec les normes, mais
selon l'historique des objets dans le vidage, peut ne pas être restauré correctement.
-?
--Aidez-moi
Affichez l'aide sur les arguments de ligne de commande de pg_restore et quittez.
pg_restore accepte également les arguments de ligne de commande suivants pour les paramètres de connexion :
-h hôte
--hôte=hôte
Spécifie le nom d'hôte de la machine sur laquelle le serveur s'exécute. Si la valeur
commence par une barre oblique, il est utilisé comme répertoire pour le socket de domaine Unix. Les
par défaut est tiré du PGHOST variable d'environnement, si définie, sinon un domaine Unix
la connexion socket est tentée.
-p port
--port=port
Spécifie le port TCP ou l'extension de fichier socket de domaine Unix local sur lequel le serveur
est à l'écoute des connexions. Par défaut à la PGPORT variable d'environnement, si elle est définie, ou
une valeur par défaut compilée.
-U Nom d'utilisateur
--nom d'utilisateur=Nom d'utilisateur
Nom d'utilisateur sous lequel se connecter.
-w
--pas de mot de passe
N'émettez jamais d'invite de mot de passe. Si le serveur requiert une authentification par mot de passe et un
le mot de passe n'est pas disponible par d'autres moyens tels qu'un fichier .pgpass, la connexion
tentative échouera. Cette option peut être utile dans les tâches par lots et les scripts où aucun utilisateur
est présent pour saisir un mot de passe.
-W
--le mot de passe
Force pg_restore à demander un mot de passe avant de se connecter à une base de données.
Cette option n'est jamais indispensable, car pg_restore demandera automatiquement un
mot de passe si le serveur demande une authentification par mot de passe. Cependant, pg_restore gaspillera
une tentative de connexion découvrant que le serveur veut un mot de passe. Dans certains cas, c'est
vaut la peine d'être tapé -W pour éviter la tentative de connexion supplémentaire.
--rôle=nom de rôle
Spécifie un nom de rôle à utiliser pour effectuer la restauration. Cette option provoque pg_restore
émettre un SET RÔLE nom de rôle après la connexion à la base de données. C'est utile
lorsque l'utilisateur authentifié (spécifié par -U) n'a pas les privilèges nécessaires à pg_restore,
mais peut passer à un rôle avec les droits requis. Certaines installations ont une politique
contre la connexion directe en tant que superutilisateur, et l'utilisation de cette option permet des restaurations vers
être exécuté sans enfreindre la politique.
ENVIRONNEMENT
PGHOST
OPTIONS
PGPORT
UtilisateurPGU
Paramètres de connexion par défaut
Cet utilitaire, comme la plupart des autres utilitaires PostgreSQL, utilise également les variables d'environnement
supporté par libpq (voir Section 31.14, « Variables d'environnement », dans la documentation).
Cependant, il ne lit pas BASE DE DONNÉES PG lorsqu'un nom de base de données n'est pas fourni.
DIAGNOSTIC
Lorsqu'une connexion directe à la base de données est spécifiée à l'aide de la -d option, pg_restore en interne
exécute des instructions SQL. Si vous rencontrez des problèmes lors de l'exécution de pg_restore, assurez-vous que vous pouvez
pour sélectionner des informations dans la base de données en utilisant, par exemple, psql(1). De plus, tout défaut
les paramètres de connexion et les variables d'environnement utilisés par la bibliothèque frontale libpq seront
s'appliquent.
NOTES
Si votre installation comporte des ajouts locaux à la base de données template1, veillez à charger
la sortie de pg_restore dans une base de données vraiment vide ; sinon vous risquez d'avoir
erreurs dues à des définitions en double des objets ajoutés. Pour créer une base de données vide
sans aucun ajout local, copiez à partir du modèle0 et non du modèle1, par exemple :
CRÉER LA BASE DE DONNÉES foo AVEC LE MODÈLE template0;
Les limitations de pg_restore sont détaillées ci-dessous.
· Lors de la restauration de données sur une table préexistante et l'option --disable-triggers est utilisé,
pg_restore émet des commandes pour désactiver les déclencheurs sur les tables utilisateur avant d'insérer le
data, puis émet des commandes pour les réactiver une fois les données insérées. Si la
la restauration est arrêtée au milieu, les catalogues système peuvent être laissés dans le mauvais
Etat.
· pg_restore ne peut pas restaurer de manière sélective des objets volumineux ; par exemple, seuls ceux pour un
tableau spécifique. Si une archive contient des objets volumineux, alors tous les objets volumineux seront
restaurés, ou aucun d'entre eux s'ils sont exclus via -L, -t, ou d'autres options.
Voir aussi pg_dump(1) documentation pour plus de détails sur les limitations de pg_dump.
Une fois restauré, il est sage de lancer ANALYSE sur chaque table restaurée afin que l'optimiseur ait
statistiques utiles; voir Section 23.1.3, « Mettre à jour les statistiques du planificateur », dans la documentation
et Section 23.1.6, « Le démon Autovacuum », dans la documentation pour plus d'informations.
EXEMPLES
Supposons que nous ayons vidé une base de données appelée mydb dans un fichier de vidage au format personnalisé :
$ pg_dump -Fc madb > db.dump
Pour supprimer la base de données et la recréer à partir du dump :
$ dropdb madb
$ pg_restore -C -d postgres db.dump
La base de données nommée dans le -d le commutateur peut être n'importe quelle base de données existante dans le cluster ;
pg_restore ne l'utilise que pour émettre le CREATE BASE DE DONNÉES commande pour mydb. Avec -C, les données sont
toujours restauré dans le nom de la base de données qui apparaît dans le fichier de vidage.
Pour recharger le vidage dans une nouvelle base de données appelée newdb :
$ crééb -T modèle0 nouvelle base de données
$ pg_restore -d nouvelle base de données db.dump
Notez que nous n'utilisons pas -C, et à la place, connectez-vous directement à la base de données dans laquelle restaurer.
Notez également que nous clonons la nouvelle base de données à partir de template0 et non de template1, pour nous assurer qu'elle est
initialement vide.
Pour réorganiser les éléments de la base de données, il est d'abord nécessaire de vider la table des matières du
archiver:
$ pg_restore -l db.dump > db.list
Le fichier de liste se compose d'un en-tête et d'une ligne pour chaque élément, par exemple :
;
; Archive créée le lun. 14 sept. 13:55:39 2009
; nom de base de données : DBDEMOS
; Entrées de la table des matières : 81
; Compression : 9
; Version de vidage : 1.10-0
; Format : PERSONNALISÉ
; Entier : 4 octets
; Décalage : 8 octets
; Dumpé à partir de la version de la base de données : 8.3.5
; Dumpé par la version pg_dump : 8.3.8
;
;
; Entrées de table des matières sélectionnées :
;
3 ; 2615 2200 SCHEMA - public pacha
1861 ; 0 0 COMMENTAIRE - SCHEMA public pacha
1862 ; 0 0 ACL - pacha public
317 ; 1247 17715 TYPE public pasha composite
319 ; 1247 25899 DOMAINE domaine public0 pacha
Les points-virgules commencent un commentaire, et les nombres au début des lignes se réfèrent à l'interne
ID d'archive attribué à chaque élément.
Les lignes du fichier peuvent être commentées, supprimées et réorganisées. Par exemple:
dix; 10 TABLE map_resolutions postgres
;2; 145344 TABLEAU espèces postgres
;4; 145359 TABLE nt_header postgres
6 ; 145402 TABLE Espèces_records postgres
;8; 145416 TABLE ss_old postgres
pourrait être utilisé comme entrée dans pg_restore et ne restaurerait que les éléments 10 et 6, dans cet ordre :
$ pg_restore -L db.list db.dump
Utilisez pg_restore en ligne en utilisant les services onworks.net