PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como despejar os dados de objetos grandes do Postgres 9.4 e depois importá-los para o Postgres8.x?


O problema é que o dump usa a função pg_catalog.lowrite(integer, bytea) para criar o objeto grande e a sintaxe padrão como bytea literais são representados no PostgreSQL mudou com a versão 9.0.

Existe o parâmetro bytea_output que pode ser definido como escape para produzir bytea no formato antigo com versões posteriores do PostgreSQL. Infelizmente, pg_dump não respeita esse parâmetro ao criar dumps, ele sempre usa o “novo” hex formato.

O resultado é que um dump contendo objetos grandes de uma versão do PostgreSQL 9.0 ou posterior não pode ser restaurado em um banco de dados pré-9.0.

Você terá que transferir esses objetos grandes de alguma outra forma, provavelmente escrevendo um programa de migração.

Você poderia propor (na lista de discussão pgsql-hackers) uma opção para pg_dump que permite definir bytea_escape para o dump, mas você pode encontrar resistência, pois a restauração de um dump de uma versão posterior do PostgreSQL para uma mais antiga não é suportada.