pg_restore

Nome

pg_restore --  restaura um banco de dados do PostgreSQL a partir de um arquivo criado pelo pg_dump

Sinopse

pg_restore [opção...] [nome_do_arquivo]

Descrição

O pg_restore é um utilitário para restaurar um banco de dados do PostgreSQL, a partir de uma cópia de segurança criada pelo pg_dump em um dos formatos não-texto-puro. São submetidos os comandos necessários para reconstruir o banco de dados no estado em que este se encontrava no momento em que foi salvo. Os arquivos de cópia de segurança também permitem ao pg_restore selecionar o que será restaurado, ou mesmo reordenar os itens antes de serem restaurados. Os arquivos de cópia de segurança são projetados para serem portáveis entre arquiteturas diferentes.

O pg_restore pode operar de dois modos: Se o nome do banco de dados for especificado, a cópia de segurança será restaurada diretamente no banco de dados (Os objetos grandes só podem ser restaurados utilizando uma conexão direta com o banco de dados como esta). Senão, será criado um script (escrito em um arquivo ou na saída padrão), contendo os comandos SQL necessários para reconstruir o banco de dados. A saída em script é equivalente ao formato de saída texto-puro do pg_dump. Algumas das opções que controlam a saída são, portanto, análogas às opções do pg_dump.

Obviamente, o pg_restore não pode restaurar informações que não estão presentes no arquivo de cópia de segurança. Por exemplo, se a cópia de segurança for gerada usando a opção "salvar os dados como comandos INSERT", o pg_restore não poderá carregar os dados usando comandos COPY.

Opções

O pg_restore aceita os seguintes argumentos de linha de comando.

nome_do_arquivo

Especifica o local do arquivo de cópia de segurança a ser restaurado. Se não for especificado, será utilizada a entrada padrão.

-a
--data-only

Restaura somente os dados, não restaura o esquema (definições dos dados).

-c
--clean

Remove (DROP) os objetos do banco de dados antes de criá-los.

-C
--create

Cria o banco de dados antes de restaurá-lo (Quando esta opção é utilizada, o banco de dados especificado na opção -d é usado apenas para submeter o comando CREATE DATABASE inicial. Todos os dados são restaurados no banco de dados cujo nome aparece na cópia de segurança).

-d nome_do_banco_de_dados
--dbname=nome_do_banco_de_dados

Conecta ao banco de dados nome_do_banco_de_dados e restaura diretamente neste banco de dados.

-e
--exit-on-error

Termina se for encontrado um erro ao enviar os comandos SQL para o banco de dados. O padrão é continuar e mostrar um contador de erros ao término da restauração.

-f arquivo_de_saída
--file=arquivo_de_saída

Especifica o arquivo de saída para o script gerado, ou para conter a listagem quando for utilizada com a opção -l. Por padrão a saída padrão.

-F formato
--format=formato

Especifica o formato do arquivo da cópia de segurança. Não é necessário especificar o formato, porque o pg_restore determina o formato automaticamente. Se for especificado, poderá ser um dos seguintes:

t

A cópia de segurança é um arquivo tar. Este formato de cópia de segurança permite reordenar e/ou excluir elementos do esquema ao restaurar o banco de dados. Também permite limitar quais dados serão recarregados na restauração.

c

A cópia de segurança está no formato personalizado do pg_dump. Este é o formato mais flexível, porque permite reordenar a carga dos dados e dos elementos do esquema. Além disso, este formato é comprimido por padrão.

-i
--ignore-version

Ignora a verificação da versão do banco de dados.

-I nome_do_índice
--index=nome_do_índice

Restaura apenas a definição do índice especificado.

-l
--list

Lista o conteúdo da cópia de segurança. A saída desta operação pode ser usada com a opção -L para restringir e reordenar os itens a serem restaurados.

-L arquivo_da_listagem
--use-list=arquivo_da_listagem

Restaura apenas os elementos presentes no arquivo_da_listagem, e na ordem em que aparecem neste arquivo. As linhas podem ser movidas e, também, podem virar comentário colocando ";" no seu início (Veja os exemplos abaixo).

-O
--no-owner

Não gera comandos para definir os donos dos objetos correspondendo aos donos destes objetos no banco de dados de origem. Por padrão, o pg_restore executa o comando ALTER OWNER ou SET SESSION AUTHORIZATION para definir os donos dos elementos criados no esquema. Estes comando não são bem-sucedidos a menos que a conexão inicial com o banco de dados seja feita por um superusuário (ou o mesmo usuário que possui todos os objetos presentes no script). Usando a opção -O, pode ser utilizado qualquer nome de usuário na conexão inicial, e este usuário será o dono de todos objetos criados.

-P nome_da_função(tipo_do_argumento [, ...])
--function=nome_da_função(tipo_do_argumento [, ...])

Restaura apenas a função especificada. Tome cuidado para escrever o nome da função e os argumentos exatamente como estes aparecem na tabela de conteúdo da cópia de segurança.

-R
--no-reconnect

Esta opção está obsoleta, mas ainda é aceita para manter a compatibilidade com as versões anteriores.

-s
--schema-only

Restaura somente o esquema (definições dos dados), não os dados (conteúdo das tabelas). Os valores das seqüências são reiniciados.

-S nome_de_usuário
--superuser=nome_de_usuário

Especifica o nome de usuário do superusuário a ser usado para desativar os gatilhos. Somente é relevante quando é usada a opção --disable-triggers.

-t tabela
--table=tabela

Restaura apenas a definição e/ou dados da tabela especificada.

-T gatilho
--trigger=gatilho

Restaura apenas o gatilho especificado.

-v
--verbose

Especifica o modo verboso.

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

Impede restaurar os privilégios de acessos (comandos GRANT/REVOKE).

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

Gera comandos SET SESSION AUTHORIZATION do padrão SQL, em vez dos comandos OWNER TO. Isto torna a cópia de segurança mais compatível com o padrão, mas dependendo da disposição dos objetos na cópia de segurança pode não restaurar de forma apropriada.

-X disable-triggers
--disable-triggers

Esta opção é relevante apenas quando se restaura somente os dados. Faz com que o pg_restore execute comandos para desativar, temporariamente, os gatilhos das tabelas de destino enquanto os dados são recarregados. Deve ser utilizada quando existem verificações de integridade referencial, ou outros gatilhos nas tabelas, que não se deseja que sejam chamados durante a recarga dos dados.

Atualmente, os comandos emitidos para a opção --disable-triggers devem ser executados por superusuários. Portanto, também deve ser especificado o nome de um superusuário com a opção -S ou, de preferência, executar, com cuidado, o script produzido como um superusuário.

O pg_restore também aceita os seguintes argumentos de linha de comando para os parâmetros de conexão:

-h hospedeiro
--host=hospedeiro

Especifica o nome de hospedeiro da máquina onde o servidor de banco de dados está executando. Se o nome iniciar por barra (/), será utilizado como o diretório do soquete do domínio Unix. O padrão é obter o nome a partir da variável de ambiente PGHOST, se esta estiver definida, senão tentar uma conexão pelo soquete do domínio Unix.

-p porta
--port=porta

Especifica a porta TCP, ou a extensão do arquivo de soquete do domínio Unix local, onde o servidor está atendendo as conexões. O padrão é obter o valor a partir da variável de ambiente PGPORT, se esta estiver definida, senão usar o valor padrão compilado.

-U nome_de_usuário

Conectar como o usuário especificado.

-W

Força a solicitação da senha, o que deve acontecer automaticamente quando o servidor requer autenticação por senha.

Ambiente

PGHOST
PGPORT
PGUSER

Parâmetros de conexão padrão.

Diagnósticos

Quando é especificada a conexão direta com o banco de dados usando a opção -d, o pg_restore executa internamente comandos SQL. Se acontecerem problemas ao executar o pg_restore, deve-se ter certeza que é possível selecionar informações no banco de dados utilizando, por exemplo, o utilitário psql.

Observações

Se o agrupamento de bancos de dados tiver alguma adição local ao banco de dados template1, deve-se ter o cuidado de restaurar a saída do pg_restore em um banco de dados totalmente vazio; senão, podem acontecer erros devido à duplicidade de definição dos objetos adicionados. Para criar um banco de dados vazio, sem nenhuma adição local, deve-se fazê-lo partir de template0, e não de template1 como, por exemplo:

CREATE DATABASE foo WITH TEMPLATE template0;

As limitações do pg_restore estão descritas abaixo.

Consulte também a documentação do pg_dump para obter os detalhes de suas limitações.

Uma vez restaurado, é aconselhável executar o comando ANALYZE em todas as tabelas restauradas para que o otimizador possua estatísticas úteis.

Exemplos

Para gerar uma cópia de segurança do banco de dados meu_bd, que contém objetos grandes, em um arquivo tar:

$ pg_dump -Ft -b meu_bd > db.tar

Para restaurar este banco de dados (com os objetos grandes) no banco de dados chamado novo_bd:

$ pg_restore -d novo_bd db.tar

Para reordenar os itens do banco de dados, primeiro é necessário criar um arquivo contendo a tabela de conteúdo (índice) da cópia de segurança:

$ pg_restore -l copia_de_seguranca.arquivo > copia_de_seguranca.list

O arquivo de listagem consiste de um cabeçalho e uma linha para cada item como, por exemplo,

;
; 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

No início da linha ponto-e-vírgula inicia um comentário, e o número refere-se ao identificador interno de arquivamento atribuído a cada item.

As linhas do arquivo podem ser transformadas em comentário, excluídas e reordenadas. Por exemplo, poderia ser usado

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

como entrada do pg_restore, e somente restauraria os itens 10 e 6, nesta ordem.

$ pg_restore -L copia_de_seguranca.list copia_de_seguranca.arquivo

Histórico

O utilitário pg_restore apareceu pela primeira vez no PostgreSQL 7.1.

Consulte também

pg_dump, pg_dumpall, psql
SourceForge.net Logo CSS válido!