PostgreSQL: Das Verzeichnis kann nicht in / root geändert werden

12

Ich versuche, eine Tabelle planet_osm_polygonvon einer Datenbank osmin eine andere zu kopieren test. Ich su postgresund führte die pg_dump.

Problem: Ich erhalte jedoch den Fehler could not change directory to "/root"und die Password:Eingabeaufforderung wurde zweimal angezeigt! Gibt es eine Möglichkeit, das auszuführen, pg_dumpwenn Sie als angemeldet sind 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:

AKTUALISIEREN

Problem Nr. 2: Es scheint, dass die Tabelle in das publicSchema kopiert wird , obwohl ich das Flag übergeben habe --table="staging.planet_osm_polygon". Warum wird es nicht in ein Schema kopiert staging?

Nyxynyx
quelle
Es gibt keinen --table Parameter zu psql, der die Ursache von Problem # 2 sein kann
dezso
@dezso Ich benutze pg_dump, ruft das tatsächlich an psql? postgresql.org/docs/9.1/static/app-pgdump.html
Nyxynyx
Nein, aber Ihre Befehlszeile enthältpsql -h localhost "test" --table "staging.planet_osm_polygon"
dezso
@dezso Oh, das habe ich nicht bemerkt !! Ich denke, es wird dann immer in das publicSchema kopiert
Nyxynyx
Dieses Problem ist, weil pgsql / Verzeichnis nicht existiert, müssen Sie es in / var / lib / pgsql diese Arbeit für mich erstellen. Mit freundlichen Grüßen Hiram
Hiram Walker

Antworten:

25

Versuchen Sie Folgendes: Re: konnte das Verzeichnis nicht in "/ root" ändern :

Anscheinend haben Sie "su postgres" vom Root-Konto aus ausgeführt, sodass Sie sich immer noch im Home-Verzeichnis von root befinden. Es ist besser, "su - postgres" auszuführen, um sicherzustellen, dass Sie die gesamte Umgebung des Postgres-Kontos erworben haben. Das Lesen von "man su" könnte Ihnen hier helfen.

Ela
quelle
Ist es normal, dass zweimal nach dem Passwort gefragt wird? Wenn Sie das Kennwort ein zweites Mal eingeben, wird es nicht maskiert.
Nyxynyx
1
Vielleicht, weil Sie zwei Operationen ausführen: 1. pg_dump -h localhost "osm" - Tabelle "public.planet_osm_polygon" 2. psql -h localhost "test" - Tabelle "staging.planet_osm_polygon"
Ela
3
Alternative mit Sudo: Sudo-Hiu Postgres
Max Lobur
1

Für mich war das der Trick, achten Sie auf Anführungszeichen (')

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'

Beachten Sie die -Hiufür sudo oder verwendensu - postgres

Sie können das auch in einen Cronjob für Wurzel mit setzen crontab -e

Philippe Gachoud
quelle