Niestety cholerny pg_restore nie umie wciągnąć takich plików. Wykonywanie ich z linii komend (psql -f nazwa_pliku) lub z PgAdmina też nic nie dało.
Dla uściślenia fragment takiego dumpa wygląda tak:
COPY "acAclUserModules" ("AclId", "TargetId", "UserId", "AclUserModuleVersionTs", "TransactionId", "LastChangeOwner", "AclUserModuleDeleted") FROM stdin;
809 23 1 2009-04-28 13:03:22.661+00 \N 2 2008-12-05 02:15:38.214436+00
810 56 1 2009-04-28 13:03:22.661+00 \N 2 2008-12-05 02:15:38.214436+00
811 29 1 2009-04-28 13:03:22.661+00 \N 2 2008-12-05 02:15:38.214436+00
\.
Oprócz komendy COPY zamiast INSERT, charakterystyczne jest źródło danych - stdin. Czyli wejście standardowe klawiatura lub plik, jeśli go przekierować. I właśnie takie jest rozwiązanie problemu
psql -d baza_danych -U user < plik_z_dumpem.sql
Do interpretera PostgreSQL jest przekierowywana zawartość pliku, tj. na jego wejście standardowe. I w ten sposób wciągamy dumpy z COPY zamiast INSERT.
Nadmienię tylko, że oczywiście tworząc dumpa mamy możliwość wyboru formatu wstawiania danych, czy COPY czy INSERT. Odsyłam do dokumentacji pg_dump. Musicie tylko zdawać sobie sprawę, że wersja z COPY jest dużo szybsza, ale za to nie można jej załadować z wygodnego w użyciu PgAdmina.
Polecam artykuł źródłowy.
No comments:
Post a Comment