pg_restore

pg_restore — restaura um banco de dados do PostgreSQL a partir de uma exportação criada pelo pg_dump

Sinopse

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

Descrição

Figura 10. Exportação/Importação no PostgreSQL


O pg_restore é um utilitário para restaurar um banco de dados do PostgreSQL a partir de exportações criadas pelo pg_dump em um dos formatos estruturados (não script/texto-puro). São executados os comandos necessários para reconstruir o banco de dados no estado em que este se encontrava no momento em que foi exportado. As exportações estruturadas também permitem que o pg_restore seja seletivo sobre o que será restaurado, ou até mesmo para reordenar os itens antes de serem restaurados. Estas exportações são projetadas para serem portáveis entre arquiteturas diferentes.

O pg_restore pode operar em dois modos. Se for especificado o nome do banco de dados, o pg_restore irá se conectar a este banco de dados e restaurar o conteúdo da exportação diretamente neste banco de dados. Caso contrário, é escrito em um arquivo, ou na saída padrão, um script contendo os comandos SQL necessários para restaurar o banco de dados. O script dessa saída é equivalente ao formato de exportação de texto-puro do pg_dump. Algumas das opções que controlam esta 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 na exportação. Por exemplo, se a exportação foi criada usando a opção para exportar os dados como comandos INSERT, o pg_restore não poderá restaurar os dados usando o comando COPY.

Atenção

Restaurar uma exportação faz com que o destino execute um código arbitrário escolhido pelos superusuários de origem. As exportações e importações parciais não limitam isto. Se os superusuários de origem não forem confiáveis, as instruções SQL exportadas devem ser inspecionadas antes da importação. Os arquivos de exportação que não são de texto-puro podem ser inspecionados usando a opção --file do pg_restore. Note que o cliente que executa a exportação e importação não precisa confiar nos superusuários de origem ou de destino.

Opções

O pg_restore aceita os seguintes argumentos de linha de comando.

nome_do_arquivo

Especifica a localização do arquivo produzido pela exportação (ou diretório, no caso de uma exportação no formato diretório) a ser restaurado. Se este argumento não for especificado, será usada a entrada padrão.

-a
--data-only

Restaura apenas os dados, não restaura esquemas (definições de dados) nem estatísticas. São restaurados os dados das tabelas, objetos grandes e valores das sequências, se presentes na exportação.

Esta opção é semelhante, mas não idêntica por razões históricas, a especificar --section=data.

-c
--clean

Antes de restaurar os objetos do banco de dados, executa o comando DROP para excluir todos os objetos que serão restaurados. Esta opção é útil para sobrescrever um banco de dados existente. Se algum dos objetos não existir no banco de dados de destino, serão mostradas mensagens de erro que podem ser ignoradas, a menos que também seja especificado --if-exists.

-C
--create

Cria o banco de dados antes de fazer a restauração. Se também for especificado --clean, exclui e recria o banco de dados de destino antes de se conectar a ele.

Com a opção --create, o pg_restore também restaura o comentário do banco de dados, se houver, e quaisquer configurações de variáveis de configuração que sejam específicas para este banco de dados, ou seja, qualquer comando ALTER DATABASE ... SET ... e ALTER ROLE ... IN DATABASE ... SET ... que mencione este banco de dados. Os privilégios de acesso para o banco de dados também são restaurados, a menos que seja especificada a opção --no-acl.

Quando esta opção é usada, o banco de dados especificado por -d é usado apenas para executar os comandos iniciais DROP DATABASE e CREATE DATABASE. Todos os dados são restaurados no banco de dados cujo nome aparece na exportação.

-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. O nome_do_banco_de_dados pode ser uma cadeia de caracteres de conexão. Neste caso, os parâmetros da cadeia de caracteres de conexão prevalecem sobre quaisquer opções de linha de comando conflitantes.

-e
--exit-on-error

Termina se for encontrado erro ao enviar comandos SQL para o banco de dados. O padrão é prosseguir e mostrar a totalização de erros ao final da restauração.

-f nome_do_arquivo
--file=nome_do_arquivo

Especifica o arquivo de saída para o script gerado, ou para a listagem, quando usado com -l. Deve ser usado o caractere - para especificar stdout.

-F formato
--format=formato

Especifica o formato da exportação. Não é necessário especificar o formato, porque o pg_restore determina o formato automaticamente. Se especificado, pode ser um dos seguintes:

c
custom

O arquivo de saída produzido pela exportação está no formato personalizado do pg_dump.

d
directory

A saída produzida pela exportação é um diretório.

t
tar

O arquivo de saída produzido pela exportação está no formato tar.

-I índice
--index=índice

Restaura apenas a definição do índice indicado. Podem ser especificados vários índices usando várias opções -I.

-j número_de_processos_simultâneos
--jobs=número_de_processos_simultâneos

Executa as etapas mais demoradas de pg_restore — aquelas que carregam os dados, criam índices ou criam restrições — simultaneamente, usando até número_de_processos_simultâneos sessões simultâneas. Esta opção pode reduzir drasticamente o tempo de restauração de um banco de dados grande em um servidor executando em uma máquina com vários processadores. Esta opção é ignorada ao gerar um script em vez de se conectar diretamente a um servidor de banco de dados.

Cada trabalho é um processo ou um encadeamento (thread), dependendo do sistema operacional, e usa uma conexão separada com o servidor.

O valor ideal para esta opção depende da configuração de hardware do servidor, do cliente e da rede. Os fatores incluem o número de núcleos da CPU e a configuração de disco. Um bom lugar para começar é o número de núcleos da CPU no servidor, mas valores maiores do que isto também podem levar a tempos de restauração mais rápidos em muitos casos. Evidentemente, valores muito altos levarão a uma diminuição do desempenho por conta da sobrecarga da memória.

Somente os formatos personalizado e de diretório têm suporte com esta opção. A entrada deve ser um arquivo ou diretório regular (não, por exemplo, um pipe ou a entrada padrão). Além disso, múltiplos trabalhos não podem ser usados em conjunto com a opção --single-transaction.

-l
--list

Lista a tabela de conteúdo da exportação. A saída dessa operação pode ser usada como entrada para a opção -L. Note que se forem usadas opções de filtragem como -n ou -t com -l, elas restringirão os itens listados.

-L arquivo_lista
--use-list=arquivo_lista

Restaura apenas os elementos da exportação listados no arquivo_lista, restaurando na ordem em que aparecem no arquivo. Note que se forem usadas opções de filtragem como -n ou -t com -L, elas restringirão os itens listados.

O arquivo_lista é normalmente criado editando a saída de uma operação -l anterior. As linhas podem ser movidas ou removidas, e também podem virar comentário colocando um ponto-e-vírgula (;) no início da linha. Veja exemplos abaixo.

-n esquema
--schema=esquema

Restaura apenas os objetos presentes no esquema indicado. Podem ser especificados vários esquemas usando várias opções -n. Pode ser combinado com a opção -t para restaurar apenas uma tabela específica.

-N esquema
--exclude-schema=esquema

Não restaura objetos presentes no esquema indicado. Podem ser especificados vários esquemas a serem excluídos usando várias opções -N.

Quando são fornecidas as opções -n e -N para o mesmo nome de esquema, a opção -N tem precedência e o esquema é excluído.

-O
--no-owner

Não gera comandos para definir o dono dos objetos para corresponder ao banco de dados original. Por padrão, o pg_restore gera instruções ALTER OWNER ou SET SESSION AUTHORIZATION para definir o dono dos objetos do esquema criado. Estas instruções falham, 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 no script). Com a opção -O pode ser usado qualquer nome de usuário para a conexão inicial, e este usuário será o dono de todos os objetos criados.

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

Restaura apenas a função indicada. Deve-se ter o cuidado de escrever o nome da função e os argumentos exatamente como aparecem na listagem do arquivo de exportação. Podem ser especificadas várias funções usando várias opções -P.

-R
--no-reconnect

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

-s
--schema-only

Restaura apenas o esquema (definições de dados), não os dados em si, desde que as entradas do esquema estejam presentes na exportação.

Esta opção não pode ser usada com --data-only ou --statistics-only. Esta opção é semelhante, mas não idêntica por razões históricas, a especificar --section=pre-data --section=post-data --no-statistics.

(Não confunda esta opção com a opção --schema, que usa a palavra esquema com um significado diferente.)

-S nome_do_usuário
--superuser=nome_do_usuário

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

-t tabela
--table=tabela

Restaura apenas a definição e/ou dados da tabela indicada. Para este propósito, tabela inclui visões, visões materializadas, sequências e tabelas estrangeiras. Podem ser selecionadas várias tabelas escrevendo a opção -t várias vezes. Esta opção pode ser combinada com a opção -n para especificar a(s) tabela(s) em um determinado esquema.

Nota

Quando é especificada a opção -t, o pg_restore não faz nenhuma tentativa de restaurar quaisquer outros objetos de banco de dados dos quais a(s) tabela(s) selecionada(s) possa(m) depender. Portanto, não há garantia de que a restauração de uma determinada tabela específica em um banco de dados limpo será bem-sucedida.

Nota

Esta opção não se comporta de forma idêntica à opção -t do pg_dump. Não há, no momento, nenhuma provisão para correspondência de caractere curinga no pg_restore, nem é possível incluir o nome do esquema em -t. E, enquanto a opção -t do pg_dump também exporta os objetos correlacionados (como índices) da(s) tabela(s) selecionada(s), a opção -t do pg_restore não restaura os objetos correlacionados.

Nota

Nas versões do PostgreSQL anteriores a 9.6, esta opção correspondia apenas a tabelas, e não a qualquer outro tipo de relação.

-T nome_do_gatilho
--trigger=nome_do_gatilho

Restaura apenas o gatilho indicado. Podem ser especificados vários gatilhos usando várias opções -T.

-v
--verbose

Especifica o modo verboso. Faz com que o pg_restore envie comentários detalhados do objeto e horários de início/fim para o arquivo de saída, e mensagens de progresso para a saída de erro padrão. A repetição dessa opção faz com que apareçam mensagens adicionais no nível de depuração na saída de erro padrão.

-V
--version

Mostra a versão do pg_restore e termina.

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

Impede a restauração dos privilégios de acesso (comandos GRANT/REVOKE).

-1
--single-transaction

Executa a restauração como uma única transação (ou seja, envolta pelos comandos BEGIN/COMMIT). Esta opção garante que todos os comandos sejam concluídos com êxito, ou que nenhuma alteração seja aplicada. Implica, também, na opção --exit-on-error.

--disable-triggers

Esta opção é relevante apenas ao realizar uma restauração sem esquema. Esta opção instrui o pg_restore a executar comandos para desativar temporariamente os gatilhos nas tabelas de destino enquanto os dados são restaurados. Deve ser usada se houver verificações de integridade referencial, ou outros gatilhos nas tabelas, que não se deseje chamar durante a restauração dos dados.

No momento, os comandos emitidos para --disable-triggers devem ser executados como superusuário. Portanto, também é necessário especificar um nome de superusuário com a opção -S ou, de preferência, executar o pg_restore como um superusuário do PostgreSQL.

--enable-row-security

Esta opção é relevante apenas ao restaurar o conteúdo de uma tabela que possui segurança de linha. Por padrão, o pg_restore define row_security como desativado, para garantir que todos os dados na tabela sejam restaurados. Se o usuário não tiver privilégios suficientes para ignorar a segurança de linha, será relatado um erro. Esta opção instrui o pg_restore a ativar row_security, permitindo que o usuário tente restaurar o conteúdo da tabela com segurança de linha ativa. Mesmo assim ainda pode falhar se o usuário não tiver o direito de inserir as linhas da exportação na tabela.

Note que no momento esta opção também requer que a exportação esteja no formato INSERT, porque o comando COPY FROM não oferece suporte à segurança no nível de linha.

--filter=nome_do_arquivo

Especifica um nome de arquivo a partir do qual serão lidos os padrões para objetos a serem incluídos ou excluídos da exportação. Os padrões são interpretados segundo as mesmas regras de -n/--schema para incluir objetos em esquemas, -N/--exclude-schema para excluir objetos em esquemas, -P/--function para restaurar as funções indicadas, -I/--index para restaurar os índices indicados, -t/--table para restaurar tabelas indicadas, ou -T/--trigger para restaurar os gatilhos. Para ler da STDIN deve ser usado - como nome do arquivo. A opção --filter pode ser especificada em conjunto com as opções listadas acima para incluir ou excluir objetos, e também pode ser especificada mais de uma vez para indicar vários arquivos de filtro.

O arquivo lista um padrão de banco de dados por linha, com o seguinte formato:

{ include | exclude } { function
                      | index
                      | schema
                      | table
                      | trigger
                      } PADRÃO

A primeira palavra-chave especifica se os objetos que correspondem ao padrão devem ser incluídos ou excluídos. A segunda palavra-chave especifica o tipo de objeto a ser filtrado usando o padrão:

  • function: funções. Funciona como a opção -P/--function. Esta palavra-chave só pode ser usada com a palavra-chave include.

  • index: índices. Funciona como a opção -I/--indexes. Esta palavra-chave só pode ser usada com a palavra-chave include.

  • schema: esquemas. Funciona como as opções -n/--schema e -N/--exclude-schema.

  • table: tabelas. Funciona como a opção -t/--table. Esta palavra-chave só pode ser usada com a palavra-chave include.

  • trigger: gatilhos. Funciona como a opção -T/--trigger. Esta palavra-chave só pode ser usada com a palavra-chave include.

Linhas que começam com # são consideradas comentários e são ignoradas. Também podem ser colocados comentários após uma linha de padrão de objeto. Linhas em branco também são ignoradas. Veja Padrões para saber como colocar delimitadores em padrões.

--if-exists

Usa comandos DROP ... IF EXISTS para excluir objetos no modo --clean. Esta opção suprime erros do tipo ... não existe que de outra forma poderiam ser relatados. Esta opção não é válida, a menos que também seja especificada a opção --clean.

--no-comments

Não emite comandos para restaurar os comentários, mesmo que a exportação os contenha.

--no-data

Não emite comandos para restaurar os dados, mesmo que a exportação os contenha.

--no-data-for-failed-tables

Por padrão, os dados da tabela são restaurados mesmo se o comando de criação da tabela tiver falhado (por exemplo, porque a tabela já existe). Com esta opção, os dados dessa tabela são ignorados. Este comportamento será útil se o banco de dados de destino já contiver o conteúdo de tabela desejado. Por exemplo, tabelas auxiliares para extensões do PostgreSQL, como o PostGIS, podem já estar carregadas no banco de dados de destino; especificar esta opção impede que sejam carregados dados duplicados ou obsoletos.

Esta opção só é eficaz ao restaurar diretamente em um banco de dados, não ao gerar saída de script SQL.

--no-policies

Não emite comandos para restaurar políticas de segurança de linha, mesmo que a exportação as contenha.

--no-publications

Não emite comandos para restaurar as publicações, mesmo que a exportação as contenha.

--no-schema

Não emite comandos para restaurar os esquemas (definições de dados), mesmo que a exportação os contenha.

--no-security-labels

Não emite comandos para restaurar os rótulos de segurança, mesmo que a exportação os contenha.

--no-statistics

Não emite comandos para restaurar as estatísticas, mesmo que a exportação as contenha.

--no-subscriptions

Não emite comandos para restaurar as subscrições, mesmo que a exportação as contenha.

--no-table-access-method

Não emite comandos para selecionar métodos de acesso à tabela. Com esta opção, todos os objetos serão criados com o método de acesso à tabela que for o padrão durante a restauração.

--no-tablespaces

Não emite comandos para selecionar espaços de tabelas. Com esta opção, todos os objetos serão criados no espaço de tabelas padrão durante a restauração.

--restrict-key=restrict_key

Usa a cadeia de caracteres fornecida como a chave \restrict do psql na saída da exportação. Esta opção só pode ser especificada para a saída de script SQL, ou seja, quando é usada a opção --file. Se não for especificada nenhuma chave de restrição, o pg_restore irá gerar uma chave aleatória conforme necessário. As chaves podem conter apenas caracteres alfanuméricos.

Esta opção destina-se principalmente a fins de teste e outros cenários que exigem resultados repetíveis (por exemplo, comparar arquivos de exportação). Não é recomendado para uso geral, porque um servidor maldoso com conhecimento prévio da chave pode ser capaz de injetar código arbitrário que será executado na máquina que irá executar o psql usando a saída da exportação.

--section=nome_da_seção

Restaura apenas a seção indicada. O nome da seção pode ser pre-data, data, ou post-data. Esta opção pode ser especificada mais de uma vez para selecionar várias seções. O padrão é restaurar todas as seções.

A seção de dados contém os dados reais das tabelas, bem como definições de objetos grandes. Os itens de pós-dados consistem em definições de índices, gatilhos, regras e restrições diferentes das restrições de verificação de validade. Os itens de pré-dados consistem em todos os outros itens de definição de dados.

--statistics

Não emite comandos para restaurar estatísticas, mesmo que a exportação as contenha. Este é o padrão.

--statistics-only

Restaura apenas as estatísticas, não o esquema (definições de dados) ou os dados em si.

--strict-names

Requer que cada qualificador de esquema (-n/--schema) e tabela (-t/--table) corresponda a pelo menos um esquema/tabela na exportação a ser restaurada.

--transaction-size=N

Executa a restauração como uma série de transações, cada uma processando até N objetos de banco de dados. Esta opção implica em --exit-on-error.

A opção --transaction-size oferece uma opção intermediária entre o comportamento padrão (uma transação por comando SQL) e -1/--single-transaction (uma única transação para todos os objetos restaurados). Embora a opção --single-transaction produza a menor sobrecarga, pode ser impraticável para grandes bancos de dados, porque a transação irá bloquear cada objeto restaurado, esgotando possivelmente o espaço da tabela de bloqueios do servidor. Usar --transaction-size com um tamanho de alguns milhares de objetos, oferece praticamente os mesmos benefícios de desempenho, limitando ao mesmo tempo a quantidade de espaço necessário na tabela de bloqueio.

--use-set-session-authorization

Gera comandos SET SESSION AUTHORIZATION do padrão SQL em vez de comandos ALTER OWNER, para especificar o dono do objeto. Esta opção torna a exportação mais compatível com o padrão, mas, dependendo do histórico dos objetos na exportação, estes podem não ser restaurados corretamente.

-?
--help

Mostra a ajuda sobre os argumentos de linha de comando do pg_restore e termina.

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

-h hospedeiro
--host=hospedeiro

Especifica o nome de hospedeiro da máquina na qual o servidor está sendo executado. Se começar com uma barra, será usado como o diretório para o soquete de domínio Unix. O padrão é obtido da variável de ambiente PGHOST, se definida, caso contrário, é tentada uma conexão de soquete de domínio Unix.

-p porta
--port=porta

Especifica a porta TCP, ou extensão do arquivo de soquete de domínio Unix local, na qual o servidor está aguardando conexões. O padrão é a variável de ambiente PGPORT, se definida, ou o padrão compilado.

-U nome_do_usuário
--username=nome_do_usuário

Nome de usuário para se conectar como.

-w
--no-password

Nunca emite uma solicitação de senha. Se o servidor exigir autenticação por senha, e uma senha não estiver disponível por outros meios, como o arquivo .pgpass, a tentativa de conexão falhará. Esta opção pode ser útil em tarefas em lote e scripts nos quais nenhum usuário está presente para inserir uma senha.

-W
--password

Força o pg_restore solicitar a senha antes de se conectar ao banco de dados.

Esta opção nunca é essencial, porque o pg_restore solicita automaticamente a senha se o servidor exigir autenticação por senha. No entanto, o pg_restore irá desperdiçar uma tentativa de conexão ao descobrir que o servidor pede uma senha. Em alguns casos vale a pena digitar -W para evitar a tentativa extra de conexão.

--role=nome_da_role

Especifica o nome da função de banco de dados (role) a ser usada para executar a restauração. Esta opção faz com que o pg_restore emita o comando SET ROLE nome_da_role após a conexão com o banco de dados. É útil quando o usuário autenticado (especificado pela opção -U) não possui os privilégios necessários para o pg_restore, mas pode alternar para uma função de banco de dados com os privilégios necessários. Algumas instalações têm uma política de segurança contra se conectar diretamente como um superusuário, e o uso dessa opção permite que sejam feitas cópias de segurança que não violam esta política.

Variáveis de ambiente

PGHOST
PGOPTIONS
PGPORT
PGUSER

Parâmetros de conexão padrão.

PG_COLOR

Especifica se devem ser usadas cores nas mensagens de diagnóstico. Os valores possíveis são always, auto e never.

Este utilitário, como a maioria dos outros utilitários do PostgreSQL, também usa as variáveis de ambiente com suporte pela libpq (veja Variáveis ​​de ambiente). Entretanto, não lê a variável de ambiente PGDATABASE quando o nome do banco de dados não é fornecido.

Diagnósticos

Quando é especificada uma conexão direta com o banco de dados usando a opção -d, o pg_restore executa internamente as instruções SQL. Havendo problemas ao executar o pg_restore, pode ser usado o psql para garantir que é possível selecionar as informações no banco de dados. Além disso, todas as configurações de conexão padrão e variáveis de ambiente usadas pela biblioteca cliente libpq se aplicam.

Notas

Se a instância de banco 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 realmente vazio; caso contrário, é provável que surjam erros devido a definições duplicadas dos objetos adicionados. Para criar um banco de dados vazio sem nenhuma adição local, deve-se clonar de template0, e não de template1. Por exemplo:

CREATE DATABASE foo WITH TEMPLATE template0;

As limitações do pg_restore são detalhadas abaixo.

  • Ao restaurar dados para uma tabela pré-existente, e a opção --disable-triggers é usada, o pg_restore emite comandos para desativar os gatilhos nas tabelas do usuário antes de inserir os dados e, no final, emite comandos para reativá-los após a inserção dos dados. Se a restauração for interrompida no meio, os catálogos do sistema podem ser deixados em um estado errado.

  • O pg_restore não pode restaurar objetos grandes seletivamente; por exemplo, apenas aqueles de uma determinada tabela específica. Se o arquivo contiver objetos grandes, todos os objetos grandes serão restaurados, ou nenhum deles, se forem excluídos por meio de -L, -t, ou outras opções.

Veja também a documentação do pg_dump para obter detalhes sobre as suas limitações.

Por padrão, o pg_restore irá restaurar as estatísticas do otimizador se estiverem incluídas no arquivo de exportação. Se nem todas as estatísticas tiverem sido restauradas, poderá ser útil executar o comando ANALYZE em cada tabela restaurada para que o otimizador tenha estatísticas úteis; veja Atualização das estatísticas do planejador e O processo de limpeza automática para obter mais informações.

Exemplos

Supondo que foi exportado o banco de dados chamado mydb em um arquivo de exportação no formato personalizado usando os comandos:

$ pg_dump -Fc mydb > db.dump

Para excluir o banco de dados e recriá-lo a partir da cópia de segurança são usados os comandos:

$ dropdb mydb
$ pg_restore -C -d postgres db.dump

O banco de dados indicado na opção -d pode ser qualquer banco de dados existente na instância; o pg_restore só o usa para executar o comando CREATE DATABASE para mydb. Com a opção -C, os dados são sempre restaurados no banco de dados cujo nome aparece no arquivo de exportação.

Para restaurar a expotação em um novo banco de dados chamado newdb são usados os comandos:

$ createdb -T template0 newdb
$ pg_restore -d newdb db.dump

Note que não é usada a opção -C e, em vez disso, é feita uma conexão diretamente com o banco de dados a ser restaurado. Note, também, que o novo banco de dados é clonado a partir de template0, e não de template1, para garantir que esteja inicialmente vazio.

Para reordenar os itens do banco de dados, primeiro é necessário escrever a tabela de conteúdo da exportação em um arquivo:

$ pg_restore -l db.dump > db.list

O arquivo contendo a listagem consiste em um cabeçalho e uma linha para cada item. Por exemplo:

;
; Archive created at Mon Sep 14 13:55:39 2009
;     dbname: DBDEMOS
;     TOC Entries: 81
;     Compression: 9
;     Dump Version: 1.10-0
;     Format: CUSTOM
;     Integer: 4 bytes
;     Offset: 8 bytes
;     Dumped from database version: 8.3.5
;     Dumped by pg_dump version: 8.3.8
;
;
; Selected TOC Entries:
;
3; 2615 2200 SCHEMA - public pasha
1861; 0 0 COMMENT - SCHEMA public pasha
1862; 0 0 ACL - public pasha
317; 1247 17715 TYPE public composite pasha
319; 1247 25899 DOMAIN public domain0 pasha

O ponto-e-vírgula inicia um comentário, e os números no início das linhas referem-se ao identificador interno do arquivo atribuído a cada item.

As linhas do arquivo podem ser comentadas, excluídas e reordenadas. Por exemplo

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

poderia ser usado como entrada para pg_restore, restaurando apenas os itens 10 e 6, nesta ordem:

$ pg_restore -L db.list db.dump

Veja também

pg_dump, pg_dumpall, psql