sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur dumpar man data för stora objekt från Postgres 9.4 och sedan importerar den till Postgres8.x?

Problemet är att dumpen använder funktionen pg_catalog.lowrite(integer, bytea) för att skapa det stora objektet, och standardsyntaxen hur bytea bokstaver representeras i PostgreSQL har ändrats med version 9.0.

Det finns parametern bytea_output som kan ställas in på escape för att mata ut bytea i det gamla formatet med senare PostgreSQL-versioner. Tyvärr, pg_dump respekterar inte den parametern när du skapar dumpar, den använder alltid den "nya" hex format.

Resultatet är att en dump som innehåller stora objekt från en PostgreSQL-version av 9.0 eller senare inte kan återställas till en databas före 9.0.

Du måste överföra dessa stora objekt på något annat sätt, förmodligen genom att skriva ett migreringsprogram.

Du kan föreslå (på pgsql-hackers e-postlista) ett alternativ för att pg_dump som gör det möjligt att ställa in bytea_escape för dumpningen, men du kan möta motstånd, eftersom återställning av en dump från en senare PostgreSQL-version till en äldre inte stöds.



  1. VÄLJ min och max värde från en del av en tabell i MySQL

  2. Hur kan jag infoga ett XML-dokument i PostgreSQL i Java?

  3. Kan jag lagra arrays i hstore med Rails

  4. Välj data från DB baserat på användarinmatning