Próbuję zrzucić niektóre tabele z wersji 9.5 beta 2 na serwer 9.4.4. Forma polecenia, którego używam, jest dość standardowa:
pg_dump -t table dbname | psql -h hostname -d dbname
Korzystam z użytkownika Postgres, co, jak sądzę, prawdopodobnie nie jest idealne, ale ponieważ są to oba pola przetwarzania danych deweloperskich, z których tylko ja korzystam i jest to związane z następującym błędem. Początkowo dostałem błąd
BŁĄD: nierozpoznany parametr konfiguracyjny „bezpieczeństwo_wiersza”
co jest oczekiwane, ponieważ ta funkcja jest nowa w wersji 9.5, i tak, zdaję sobie sprawę, że nie jest wskazane pg_dump między różnymi wersjami Postgres, ale, niestety, nieuniknione, biorąc pod uwagę, że trafiłem na bardzo niejasny błąd i muszę przenieść duży ilość danych statycznych jeden raz.
Tak więc, używając tego ohydnego włamania do usunięcia błędu row_security, i włączając stop przy pierwszym błędzie:
pg_dump -t tablemame dbname |sed 's/SET row_security = off;//'|
psql -v ON_ERROR_STOP=1 -h hostname -d dbname
Teraz dostaję:
BŁĄD: odmowa utworzenia „pg_catalog.tablename” SZCZEGÓŁ: Modyfikacje katalogu systemowego są obecnie niedozwolone
Chociaż korzystanie z roli / użytkownika Postgres może być niepożądane, rozumiem, że nie powinno być żadnych problemów z uprawnieniami tego rodzaju. Jestem otwarty na wszelkie sugestie, mając na uwadze, że jest to jednorazowa operacja i że są to urządzenia przetwarzające dane niepowiązane z żadnymi usługami na żywo, więc celowość jest lepsza niż idealna polityka dostępu do danych korporacyjnych. Powiedziawszy to, dobrze byłoby zrozumieć, jak to zrobić właściwie i uniknąć tego w przyszłości.
źródło