sql >> Database >  >> RDS >> PostgreSQL

Hoe de grote objectgegevens van Postgres 9.4 dumpen en vervolgens importeren in Postgres8.x?

Het probleem is dat de dump de functie pg_catalog.lowrite(integer, bytea) gebruikt om het grote object te maken, en de standaardsyntaxis hoe bytea letterlijke waarden worden weergegeven in PostgreSQL is gewijzigd met versie 9.0.

Er is de parameter bytea_output die kan worden ingesteld op escape om bytea uit te voeren in het oude formaat met latere PostgreSQL-versies. Helaas, pg_dump respecteert die parameter niet bij het maken van dumps, het gebruikt altijd de "nieuwe" hex formaat.

Het resultaat is dat een dump met grote objecten uit een PostgreSQL-versie van 9.0 of hoger niet kan worden hersteld in een database van vóór 9.0.

U zult deze grote objecten op een andere manier moeten overzetten, waarschijnlijk door een migratieprogramma te schrijven.

Je zou (op de pgsql-hackers mailinglijst) een optie kunnen voorstellen om pg_dump waarmee u bytea_escape . kunt instellen voor de dump, maar u kunt weerstand ondervinden, omdat het herstellen van een dump van een latere PostgreSQL-versie naar een oudere niet wordt ondersteund.



  1. CTE-fout:typen komen niet overeen tussen het anker en het recursieve deel

  2. sql selecteer vroegste datum voor meerdere rijen

  3. Maak een Inline Table-Valued Function (ITVF) in SQL Server

  4. Ik heb geen toegang tot de Google Cloud SQL-database vanuit mijn App Engine