PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да изхвърлите данните за голям обект от Postgres 9.4 и след това да ги импортирате в Postgres8.x?

Проблемът е, че дъмпът използва функцията pg_catalog.lowrite(integer, bytea) за създаване на големия обект и синтаксиса по подразбиране как bytea литералите са представени в PostgreSQL е променен с версия 9.0.

Има параметър bytea_output който може да бъде настроен на escape за извеждане на bytea в стария формат с по-късни версии на PostgreSQL. Уви, pg_dump не зачита този параметър при създаване на дъмпове, той винаги използва „новия“ hex формат.

Резултатът е, че дъмп, съдържащ големи обекти от PostgreSQL версия 9.0 или по-нова, не може да бъде възстановен в база данни преди 9.0.

Ще трябва да прехвърлите тези големи обекти по някакъв друг начин, вероятно като напишете програма за мигриране.

Можете да предложите (в пощенския списък на pgsql-hackers) опция за pg_dump което позволява да се зададе bytea_escape за дъмпа, но може да срещнете съпротива, тъй като възстановяването на дъмп от по-късна версия на PostgreSQL към по-стара не се поддържа.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка при изпълнение на миграции:sqlalchemy.exc.CompileError:Типът ENUM на Postgresql изисква име

  2. Ред на логическа обработка или SQL стандарт в клаузата WHERE

  3. Оператори на Postgres за тип данни JSON с помощта на Rails 4

  4. Тип точка в sqlachemy?

  5. ГРЕШКА:масивът не трябва да съдържа нули PostgreSQL