Questo è il comando pg_restore che può essere eseguito nel provider di hosting gratuito OnWorks utilizzando una delle nostre molteplici workstation online gratuite come Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS
PROGRAMMA:
NOME
pg_restore - ripristina un database PostgreSQL da un file di archivio creato da pg_dump
SINOSSI
pg_ripristino [opzione di connessione...] [opzione...] [Nome del file]
DESCRIZIONE
pg_restore è un'utilità per ripristinare un database PostgreSQL da un archivio creato da
pg_dump(1) in uno dei formati non di testo normale. Emetterà i comandi necessari per
ricostruire il database allo stato in cui si trovava al momento del salvataggio. L'archivio
i file consentono anche a pg_restore di essere selettivo su ciò che viene ripristinato o persino di riordinare il
oggetti prima di essere restaurati. I file di archivio sono progettati per essere portabili attraverso
architetture.
pg_restore può funzionare in due modalità. Se viene specificato un nome di database, pg_restore si connette
a quel database e ripristina i contenuti dell'archivio direttamente nel database. Altrimenti, a
viene creato lo script contenente i comandi SQL necessari per ricostruire il database e
scritto su un file o su uno standard output. Questo output dello script è equivalente al testo normale
formato di output di pg_dump. Alcune delle opzioni che controllano l'uscita sono quindi
analogo alle opzioni pg_dump.
Ovviamente pg_restore non può ripristinare le informazioni che non sono presenti nel file di archivio.
Ad esempio, se l'archivio è stato creato utilizzando il "dump data as INSERT comandi", opzione
pg_restore non sarà in grado di caricare i dati usando COPIA dichiarazioni.
VERSIONI
pg_restore accetta i seguenti argomenti della riga di comando.
Nome del file
Specifica la posizione del file di archivio (o directory, per un formato directory
archivio) da restaurare. Se non specificato, viene utilizzato lo standard input.
-a
--solo dati
Ripristina solo i dati, non lo schema (definizioni dei dati). Dati tabellari, oggetti di grandi dimensioni,
e vengono ripristinati i valori di sequenza, se presenti in archivio.
Questa opzione è simile, ma per ragioni storiche non identica a, specificando
--sezione=dati.
-c
--pulire
Pulisci (elimina) gli oggetti del database prima di ricrearli. (Salvo che --se-esiste si usa,
questo potrebbe generare alcuni messaggi di errore innocui, se degli oggetti non fossero presenti in
il database di destinazione.)
-C
--creare
Crea il database prima di ripristinarlo. Se --pulire è anche specificato, rilasciare e
ricreare il database di destinazione prima di connettersi ad esso.
Quando viene utilizzata questa opzione, il database denominato con -d viene utilizzato solo per emettere l'iniziale
GOCCIA DATABASE e a CREA DATABASE comandi. Tutti i dati vengono ripristinati nel database
nome che appare nell'archivio.
-d nomedb
--dbnome=nomedb
Connetti al database nomedb e ripristinare direttamente nel database.
-e
--exit in caso di errore
Esci se si verifica un errore durante l'invio di comandi SQL al database. Il
l'impostazione predefinita è continuare e visualizzare un conteggio degli errori alla fine del ripristino.
-f Nome del file
--file=Nome del file
Specifica il file di output per lo script generato o per l'elenco quando utilizzato con -l.
L'impostazione predefinita è l'output standard.
-F formato
--formato=formato
Specificare il formato dell'archivio. Non è necessario specificare il formato, poiché
pg_restore determinerà automaticamente il formato. Se specificato, può essere uno dei
seguenti:
c
costume
L'archivio è nel formato personalizzato di pg_dump.
d
elenco
L'archivio è un archivio di directory.
t
tar
L'archivio è a tar archivio.
-I Index
--indice=Index
Ripristina solo la definizione dell'indice denominato. È possibile specificare più indici con
multiplo -I interruttori.
-j numero-di-posti di lavoro
--lavori=numero-di-posti di lavoro
Esegui le parti più lunghe di pg_restore — quelle che caricano i dati, creano
indici o creare vincoli — utilizzando più lavori simultanei. Questa opzione può
ridurre drasticamente il tempo necessario per ripristinare un database di grandi dimensioni su un server in esecuzione su a
macchina multiprocessore.
Ogni lavoro è un processo o un thread, a seconda del sistema operativo, e utilizza a
connessione separata al server.
Il valore ottimale per questa opzione dipende dalla configurazione hardware del server, del
client e della rete. I fattori includono il numero di core della CPU e il disco
impostare. Un buon punto di partenza è il numero di core CPU sul server, ma i valori
più grande di quello può anche portare a tempi di ripristino più rapidi in molti casi. Certo,
valori troppo alti porteranno a una riduzione delle prestazioni a causa del thrashing.
Con questa opzione sono supportati solo i formati di archivio personalizzato e directory. Il
input deve essere un normale file o directory (non, ad esempio, una pipe). Questa opzione è
ignorato durante l'emissione di uno script anziché connettersi direttamente a un server di database.
Inoltre, non è possibile utilizzare più lavori insieme all'opzione --transazione singola.
-l
--elenco
Elenca il contenuto dell'archivio. L'output di questa operazione può essere utilizzato come input per
, il -L opzione. Notare che se il filtro cambia come -n or -t sono usati con -l, Hanno
limiterà gli elementi elencati.
-L file-elenco
--lista-uso=file-elenco
Ripristina solo quegli elementi di archivio che sono elencati in file-elencoe ripristinarli in
l'ordine in cui appaiono nel file. Notare che se il filtro cambia come -n or -t
sono usati con -L, limiteranno ulteriormente gli elementi ripristinati.
file-elenco viene normalmente creato modificando l'output di un precedente -l operazione. Linee
può essere spostato o rimosso e può anche essere commentato inserendo un punto e virgola (;) in
l'inizio della linea. Vedi sotto per esempi.
-n namespace
--schema=schema
Ripristina solo gli oggetti che si trovano nello schema denominato. È possibile specificare più schemi
con multipli -n interruttori. Questo può essere combinato con il -t opzione per ripristinare solo un
tabella specifica.
-O
--no-proprietario
Non emettere comandi per impostare la proprietà degli oggetti in modo che corrispondano al database originale. Di
predefinito, problemi di pg_restore ETÀ PROPRIETARIO or SET SESSIONE AUTORIZZAZIONE dichiarazioni da impostare
proprietà degli elementi dello schema creati. Queste dichiarazioni falliranno a meno che l'iniziale
la connessione al database viene effettuata da un superutente (o dallo stesso utente che possiede tutto
gli oggetti nello script). Insieme a -O, qualsiasi nome utente può essere utilizzato per l'iniziale
connessione e questo utente sarà proprietario di tutti gli oggetti creati.
-P nome-funzione (tipo di argomento [, ...])
--funzione=nome-funzione (tipo di argomento [, ...])
Ripristina solo la funzione denominata. Fai attenzione a scrivere il nome della funzione e gli argomenti
esattamente come appaiono nel sommario del file dump. Molteplici funzioni possono essere
specificato con multiplo -P interruttori.
-R
--no-riconnessione
Questa opzione è obsoleta ma è ancora accettata per compatibilità con le versioni precedenti.
-s
--solo schema
Ripristina solo lo schema (definizioni dei dati), non i dati, nella misura in cui lo schema
le voci sono presenti nell'archivio.
Questa opzione è l'inverso di --solo dati. È simile a, ma per storico
motivi non identici a, specificando --section=pre-dati --section=post-dati.
(Non confondere questo con il --schema opzione, che utilizza la parola "schema" in a
significato diverso.)
-S nome utente
--superutente=nome utente
Specificare il nome utente superutente da utilizzare quando si disabilitano i trigger. Questo è rilevante solo
if --disabilita-trigger viene utilizzato.
-t tavolo
--tabella=tavolo
Ripristina definizione e/o dati solo della tabella denominata. È possibile specificare più tabelle
con multipli -t interruttori. Questo può essere combinato con il -n opzione per specificare a
schema.
-T innescare
--trigger=innescare
Ripristina solo il trigger denominato. È possibile specificare più trigger con multiple -T
interruttori.
-v
--verboso
Specifica la modalità dettagliata.
-V
--versione
Stampa la versione di pg_restore ed esci.
-x
--no-privilegi
--no-acl
Impedire il ripristino dei privilegi di accesso (concessione/revoca comandi).
-1
--transazione singola
Eseguire il ripristino come una singola transazione (ovvero avvolgere i comandi emessi in
INIZIO/COMMETTERE). Ciò garantisce che tutti i comandi vengano completati correttamente o no
vengono applicate le modifiche. Questa opzione implica --exit in caso di errore.
--disabilita-trigger
Questa opzione è rilevante solo quando si esegue un ripristino dei soli dati. istruisce
pg_restore per eseguire comandi per disabilitare temporaneamente i trigger sulle tabelle di destinazione
mentre i dati vengono ricaricati. Usalo se hai controlli di integrità referenziale o altro
trigger sulle tabelle che non si desidera richiamare durante il ricaricamento dei dati.
Attualmente, i comandi emessi per --disabilita-trigger deve essere fatto come superutente. Così
dovresti anche specificare un nome di superutente con -S o, preferibilmente, esegui pg_restore come a
Superutente PostgreSQL.
--enable-row-security
Questa opzione è rilevante solo quando si ripristina il contenuto di una tabella che ha una riga
sicurezza. Per impostazione predefinita, pg_restore imposterà row_security su off, per garantire che tutti i dati
viene ripristinato nella tabella. Se l'utente non dispone di privilegi sufficienti per bypassare
sicurezza della riga, viene generato un errore. Questo parametro indica a pg_restore di impostare
row_security invece su on, consentendo all'utente di tentare di ripristinare il contenuto di
la tabella con la sicurezza di riga abilitata. Questo potrebbe ancora fallire se l'utente non ha
il diritto di inserire le righe dal dump nella tabella.
Nota che questa opzione attualmente richiede anche che il dump sia in INSERT formato, come COPIA A
non supporta la sicurezza delle righe.
--se-esiste
Utilizzare i comandi condizionali (cioè aggiungere una clausola IF EXISTS) durante la pulizia del database
oggetti. Questa opzione non è valida a meno che --pulire è anche specificato.
--no-data-per-tabelle-fallite
Per impostazione predefinita, i dati della tabella vengono ripristinati anche se il comando di creazione per la tabella non è riuscito
(ad esempio, perché esiste già). Con questa opzione, i dati per tale tabella vengono saltati.
Questo comportamento è utile se il database di destinazione contiene già la tabella desiderata
Contenuti. Ad esempio, tabelle ausiliarie per estensioni PostgreSQL come PostGIS
potrebbe essere già caricato nel database di destinazione; specificando questa opzione si impedisce
dati duplicati o obsoleti vengano caricati in essi.
Questa opzione è efficace solo durante il ripristino direttamente in un database, non quando
produrre l'output dello script SQL.
--no-etichette-di-sicurezza
Non emettere comandi per ripristinare le etichette di sicurezza, anche se l'archivio le contiene.
--no-tablespace
Non inviare comandi per selezionare i tablespace. Con questa opzione, tutti gli oggetti saranno
creato in qualsiasi tablespace è l'impostazione predefinita durante il ripristino.
--sezione=nomesezione
Ripristina solo la sezione nominata. Il nome della sezione può essere pre-dati, dati, o post-dati.
Questa opzione può essere specificata più di una volta per selezionare più sezioni. Il predefinito
è ripristinare tutte le sezioni.
La sezione dei dati contiene i dati effettivi della tabella e le definizioni di oggetti di grandi dimensioni.
Gli elementi post-dati consistono in definizioni di indici, trigger, regole e vincoli
diversi dai vincoli di controllo convalidati. Gli elementi pre-dati sono costituiti da tutti gli altri dati
elementi di definizione.
--use-set-session-autorizzazione
Output standard SQL SET SESSIONE AUTORIZZAZIONE comandi invece di ETÀ PROPRIETARIO comandi
per determinare la proprietà dell'oggetto. Questo rende il dump più compatibile con gli standard, ma
a seconda della cronologia degli oggetti nel dump, potrebbe non essere ripristinato correttamente.
-?
--Aiuto
Mostra l'aiuto sugli argomenti della riga di comando pg_restore ed esci.
pg_restore accetta anche i seguenti argomenti della riga di comando per i parametri di connessione:
-h host
--host=host
Specifica il nome host della macchina su cui è in esecuzione il server. Se il valore
inizia con una barra, viene utilizzato come directory per il socket del dominio Unix. Il
l'impostazione predefinita è presa da PGHOST variabile d'ambiente, se impostata, altrimenti un dominio Unix
viene tentata la connessione socket.
-p porto
--porta=porto
Specifica la porta TCP o l'estensione del file socket del dominio Unix locale su cui il server
è in ascolto di connessioni. L'impostazione predefinita è PGPORT variabile d'ambiente, se impostata, oppure
un'impostazione predefinita compilata.
-U nome utente
--nomeutente=nome utente
Nome utente con cui connettersi.
-w
--no Password
Non emettere mai una richiesta di password. Se il server richiede l'autenticazione della password e a
la password non è disponibile con altri mezzi come un file .pgpass, la connessione
tentativo fallirà. Questa opzione può essere utile in lavori batch e script in cui nessun utente
è presente per inserire una password.
-W
--parola d'ordine
Forza pg_restore per richiedere una password prima di connettersi a un database.
Questa opzione non è mai essenziale, poiché pg_restore richiederà automaticamente a
password se il server richiede l'autenticazione tramite password. Tuttavia, pg_restore sprecherà
un tentativo di connessione che scopre che il server vuole una password. In alcuni casi è
vale la pena digitare -W per evitare il tentativo di connessione extra.
--ruolo=nome ruolo
Specifica un nome di ruolo da utilizzare per eseguire il ripristino. Questa opzione causa pg_restore
emettere un SET RUOLO nome ruolo comando dopo la connessione al database. È utile
quando l'utente autenticato (specificato da -U) non ha i privilegi necessari per pg_restore,
ma può passare a un ruolo con i diritti richiesti. Alcune installazioni hanno una politica
contro l'accesso diretto come superutente e l'uso di questa opzione consente il ripristino a
essere eseguita senza violare la politica.
AMBIENTE
PGHOST
PGOZIONI
PGPORT
PGUSER
Parametri di connessione predefiniti
Questa utility, come la maggior parte delle altre utility PostgreSQL, utilizza anche le variabili di ambiente
supportato da libpq (vedere la Sezione 31.14, «Variabili d'ambiente», nella documentazione).
Tuttavia, non si legge PGDATABASE quando non viene fornito un nome di database.
DIAGNOSTICA
Quando viene specificata una connessione diretta al database utilizzando il -d opzione, pg_restore internamente
esegue istruzioni SQL. Se hai problemi con l'esecuzione di pg_restore, assicurati di essere in grado
per selezionare informazioni dal database utilizzando, ad esempio, psql(1). Inoltre, qualsiasi impostazione predefinita
le impostazioni di connessione e le variabili di ambiente utilizzate dalla libreria front-end libpq saranno
applicare.
NOTE
Se la tua installazione ha delle aggiunte locali al database template1, fai attenzione a caricare
l'output di pg_restore in un database veramente vuoto; altrimenti è probabile che tu ottenga
errori dovuti a definizioni duplicate degli oggetti aggiunti. Per creare un database vuoto
senza alcuna aggiunta locale, copia da template0 non template1, ad esempio:
CREA DATABASE pippo CON TEMPLATE template0;
Le limitazioni di pg_restore sono dettagliate di seguito.
· Quando si ripristinano i dati su una tabella preesistente e l'opzione --disabilita-trigger si usa,
pg_restore emette comandi per disabilitare i trigger sulle tabelle utente prima di inserire il
data, quindi emette i comandi per riabilitarli dopo che i dati sono stati inseriti. Se la
il ripristino viene interrotto a metà, i cataloghi di sistema potrebbero essere lasciati nel torto
stato.
· pg_restore non può ripristinare oggetti di grandi dimensioni in modo selettivo; per esempio, solo quelli per a
tabella specifica. Se un archivio contiene oggetti di grandi dimensioni, tutti gli oggetti di grandi dimensioni saranno
ripristinati, o nessuno di essi se esclusi tramite -L, -t, o altre opzioni.
Vedi anche il pg_dump(1) documentazione per i dettagli sulle limitazioni di pg_dump.
Una volta ripristinato, è saggio correre ANALIZZARE su ogni tabella ripristinata in modo che l'ottimizzatore abbia
statistiche utili; vedere la Sezione 23.1.3, «Aggiornamento delle statistiche di Planner», nella documentazione
e Sezione 23.1.6, «The Autovacuum Daemon», nella documentazione per ulteriori informazioni.
ESEMPI
Supponiamo di aver scaricato un database chiamato mydb in un file di dump in formato personalizzato:
$ pg_dump -FC miodb > db.dump
Per eliminare il database e ricrearlo dal dump:
$ dropdb miodb
$ pg_ripristino -C -d Postgres db.dump
Il database denominato nel -d switch può essere qualsiasi database esistente nel cluster;
pg_restore lo usa solo per emettere il CREA DATABASE comando per mydb. Insieme a -C, i dati sono
sempre ripristinato nel nome del database che appare nel file dump.
Per ricaricare il dump in un nuovo database chiamato newdb:
$ creato -T modello0 nuovodb
$ pg_ripristino -d nuovodb db.dump
Nota che non usiamo -Ce invece connettersi direttamente al database in cui eseguire il ripristino.
Si noti inoltre che cloniamo il nuovo database da template0 non template1, per assicurarci che lo sia
inizialmente vuoto.
Per riordinare gli elementi del database, è prima necessario eseguire il dump del sommario del
archivio:
$ pg_ripristino -l db.dump > db.list
Il file dell'elenco è costituito da un'intestazione e una riga per ogni articolo, ad esempio:
;
; Archivio creato il lun set 14 13:55:39 2009
; nomedb: DBDEMOS
; Voci TOC: 81
; Compressione: 9
; Versione dump: 1.10-0
; Formato: PERSONALIZZATO
; Intero: 4 byte
; Offset: 8 byte
; Scaricato dalla versione del database: 8.3.5
; Scaricato dalla versione pg_dump: 8.3.8
;
;
; Voci TOC selezionate:
;
3; 2615 2200 SCHEMA - pascià pubblico
1861; 0 0 COMMENTO - SCHEMA pasha . pubblico
1862; 0 0 ACL - pasha public pubblico
317; 1247 17715 TIPO pasha . composito pubblico
319; 1247 25899 DOMINIO dominio pubblico0 pasha
I punti e virgola iniziano un commento e i numeri all'inizio delle righe si riferiscono all'interno
ID archivio assegnato a ciascun elemento.
Le righe nel file possono essere commentate, eliminate e riordinate. Per esempio:
10; 145433 TABELLA map_resolutions postgres
;2; 145344 TABELLA specie postgres
;4; 145359 TABELLA nt_header postgres
6; 145402 TABELLA specie_records postgres
;8; 145416 TABELLA ss_old postgres
potrebbe essere usato come input per pg_restore e ripristinerebbe solo gli elementi 10 e 6, in questo ordine:
$ pg_ripristino -L db.list db.dump
Usa pg_restore online utilizzando i servizi onworks.net