web-dev-qa-db-ja.com

PostgreSQL:ディレクトリを/ rootに変更できません

テーブルplanet_osm_polygonをあるデータベースosmから別のデータベースtestにコピーしようとしています。私はsu postgresを実行し、pg_dumpを実行しました。

問題:ただし、エラーcould not change directory to "/root"が発生し、Password:プロンプトが2回表示されます。 rootとしてログインしたときにpg_dumpを実行する方法はありますか?

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:

更新

問題#2:フラグ--table="staging.planet_osm_polygon"を渡したにもかかわらず、テーブルがpublicスキーマにコピーされているようです。スキーマstagingにコピーされないのはなぜですか?

12
Nyxynyx

これを試してください: Re:ディレクトリを "/ root"に変更できませんでした

どうやら、ルートアカウントから「su postgres」を実行したため、まだルートのホームディレクトリにいます。 「su-postgres」を実行して、postgresアカウントの環境をすべて取得したことを確認することをお勧めします。ここで「man su」を読むと役立つかもしれません。

26
Ela

私にとってこれはトリックをしました、引用符( ')に注意してください

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'

Sudoの-Hiuに注意するか、su - postgresを使用してください

crontab -eを使用して、rootのcronjobに配置することもできます

1