PostgreSQL: Não é possível alterar o diretório para / root

12

Estou tentando copiar uma tabela planet_osm_polygonde um banco osmde dados para outro test. Eu su postgrese executei o pg_dump.

Problema: No entanto, estou recebendo o erro could not change directory to "/root"e o Password:prompt apareceu duas vezes! Existe uma maneira de executar o pg_dumpquando logado como root?

root@lalaland:~# su postgres
postgres@lalaland:/root$ pg_dump -h localhost "osm" --table "public.planet_osm_polygon" | 
    psql -h localhost "test" --table "staging.planet_osm_polygon"
could not change directory to "/root"
could not change directory to "/root"
Password: Password:

ATUALIZAR

Problema nº 2: parece que a tabela foi copiada no publicesquema, mesmo que eu tenha passado a bandeira --table="staging.planet_osm_polygon". Por que não é copiado para o esquema staging?

Nyxynyx
fonte
Não há parâmetro --table para psql, que podem ser a causa do problema # 2
Dezso
@ Dezso eu estou usando pg_dump, isso é realmente chamando psql? postgresql.org/docs/9.1/static/app-pgdump.html
Nyxynyx:
Não, mas sua linha de comando contémpsql -h localhost "test" --table "staging.planet_osm_polygon"
Dezso
@ Dezso Oh, eu não percebi isso !! Eu acho que sempre será copiado para publico esquema, em seguida
Nyxynyx
Este problema é porque pgsql / diretório não existe, você tem que criá-lo em / var / lib / pgsql este trabalho para mim .. Atenciosamente Hiram
Hiram Walker

Respostas:

25

Tente isto: Re: não foi possível alterar o diretório para "/ root" :

Aparentemente, você "su postgres" da conta root, então você ainda está no diretório inicial do root. Seria melhor executar "su - postgres" para garantir que você adquiriu todo o ambiente da conta do postgres. Ler "man su" pode ajudá-lo aqui.

Ela
fonte
É normal que esteja pedindo a senha duas vezes? Digitar a senha uma segunda vez não a oculta.
Nyxynyx
1
Talvez porque você esteja executando duas operações: 1. pg_dump -h localhost "osm" --table "public.planet_osm_polygon" 2. psql -h localhost "test" --table "staging.planet_osm_polygon"
Ela
4
Alternativa com sudo: sudo -Hiu postgres
Max Lobur
1

Para mim, isso fez o truque, preste atenção nas aspas (')

sudo -Hiu postgres 'pg_dump --column-inserts --data-only --table=someTable entities_db > /var/backups/anywhere/$(date +%Y%m%d_%H%M%S)_someTable.sql'

Observe o -Hiufor sudo ou usesu - postgres

você também pode colocar isso em um cronjob para root com crontab -e

Philippe Gachoud
fonte