PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak zrzucić dane dużego obiektu z Postgres 9.4, a następnie zaimportować je do Postgres8.x?

Problem polega na tym, że zrzut używa funkcji pg_catalog.lowrite(integer, bytea) aby utworzyć duży obiekt i domyślną składnię jak bytea literały są reprezentowane w PostgreSQL zmieniły się w wersji 9.0.

Jest parametr bytea_output który można ustawić na escape wyprowadzić bytea w starym formacie z nowszymi wersjami PostgreSQL. Niestety, pg_dump nie respektuje tego parametru podczas tworzenia zrzutów, zawsze używa „nowego” hex format.

W rezultacie zrzutu zawierającego duże obiekty z wersji PostgreSQL 9.0 lub nowszej nie można przywrócić do bazy danych przed wersją 9.0.

Będziesz musiał przenieść te duże obiekty w inny sposób, prawdopodobnie pisząc program do migracji.

Możesz zaproponować (na liście dyskusyjnej pgsql-hackers) opcję pg_dump który pozwala ustawić bytea_escape dla zrzutu, ale możesz napotkać opór, ponieważ przywracanie zrzutu z późniejszej wersji PostgreSQL do starszej nie jest obsługiwane.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Audyt PostgreSQL za pomocą pgAudit

  2. problem z aliasem kolumny postgres

  3. Jak działa date_part() w PostgreSQL

  4. uzyskać dostęp do aliasów kolumn w klauzuli WHERE w postgresql

  5. PostgreSQL - Uwierzytelnianie hasłem nie powiodło się po dodaniu ról grupowych