Eu tenho um grande arquivo de despejo que é gerado por pg_dump
que vem com o cliente PostgreSQL v12 e está em formato personalizado em vez de texto sql simples. A versão do servidor também é PostgreSQL v12.
Agora preciso recarregar o arquivo em um servidor PostgreSQL v11 e recebo uma mensagem de erro:
unrecognized configuration parameter "default_table_access_method"
Eu acho que esse parâmetro é introduzido pelo PG12, então o PG11 não pode reconhecê-lo, mesmo que eu use a versão 12 do pg_restore
.
Como o arquivo é enorme e em formato binário, NÃO consigo editá-lo para remover a linha manualmente.
Eu testei isso pg_restore test_file -f plain.sql
com um arquivo de despejo de teste e parece funcionar, e posso remover a linha do arquivo SQL simples. Mas o arquivo de despejo real tem cerca de 30 GB, o arquivo SQL simples expandido do binário pode ser maior (o banco de dados de trabalho ocupa 300 GB de espaço em disco).
Existe uma maneira de recarregá-lo de forma limpa no PG11, apenas sem a linha "SET default_table_access_method = heap;"?
Na verdade, todos os itens a seguir podem ser ignorados, porque são todos valores padrão:
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
SET default_tablespace = '';
Não, não existe, porque não há suporte para o downgrade do PostgreSQL.
Você terá que editar manualmente o dump e remover linhas como essa até que o dump seja carregado sem erros. Pode haver outros problemas mais complicados do que novos parâmetros, veja esta pergunta para obter um exemplo em uma versão mais antiga.
Se o dump for grande, você pode dividi-lo em três partes:
Você só terá que editar o primeiro e o último arquivo, que são sempre pequenos. A seção "dados" pode ser despejada em formato personalizado e será compactada. Após a edição, carregue os arquivos na mesma ordem.