sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo volcar los datos de objetos grandes de Postgres 9.4 y luego importarlos a Postgres8.x?

El problema es que el volcado usa la función pg_catalog.lowrite(integer, bytea) para crear el objeto grande y la sintaxis predeterminada cómo bytea los literales se representan en PostgreSQL ha cambiado con la versión 9.0.

Existe el parámetro bytea_output que se puede configurar para escape para generar bytea en el formato antiguo con versiones posteriores de PostgreSQL. Por desgracia, pg_dump no respeta ese parámetro al crear volcados, siempre usa el "nuevo" hex formato.

El resultado es que un volcado que contiene objetos grandes de una versión PostgreSQL de 9.0 o posterior no se puede restaurar en una base de datos anterior a la 9.0.

Tendrá que transferir estos objetos grandes de alguna otra forma, probablemente escribiendo un programa de migración.

Podría proponer (en la lista de correo de pgsql-hackers) una opción para pg_dump que permite establecer bytea_escape para el volcado, pero es posible que encuentre resistencia, ya que no se admite la restauración de un volcado de una versión posterior de PostgreSQL a una anterior.