sql >> Databáze >  >> RDS >> PostgreSQL

Jak vypsat data velkých objektů z Postgres 9.4 a poté je importovat do Postgres8.x?

Problém je v tom, že výpis používá funkci pg_catalog.lowrite(integer, bytea) vytvořit velký objekt a výchozí syntaxi how bytea literály jsou zastoupeny v PostgreSQL se změnil s verzí 9.0.

Je tam parametr bytea_output který lze nastavit na escape pro výstup bytea ve starém formátu s pozdějšími verzemi PostgreSQL. Bohužel, pg_dump nerespektuje tento parametr při vytváření výpisů, vždy používá „nový“ hex formát.

Výsledkem je, že výpis obsahující velké objekty z PostgreSQL verze 9.0 nebo novější nelze obnovit do databáze starší než 9.0.

Tyto velké objekty budete muset přenést nějakým jiným způsobem, pravděpodobně napsáním migračního programu.

Můžete navrhnout (v mailing listu pgsql-hackers) možnost pg_dump který umožňuje nastavit bytea_escape pro výpis, ale můžete se setkat s odporem, protože obnovení výpisu z novější verze PostgreSQL na starší není podporováno.



  1. Sdružování připojení PostgreSQL:Část 3 – Pgpool-II

  2. ORA-00907 při pokusu o vytvoření omezení CHECK

  3. TransactSQL ke spuštění jiného skriptu TransactSQL

  4. Jak číst LONGBLOB z MySQL