PostgreSQL:无法将目录更改为 /root

Nyx*_*nyx 19 postgresql postgis postgresql-9.1

我正在尝试将表planet_osm_polygon从一个数据库复制osm到另一个数据库test。我su postgres并执行了pg_dump.

问题:但是我收到错误could not change directory to "/root"并且Password:提示出现了两次!有没有办法pg_dump在登录时执行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:
Run Code Online (Sandbox Code Playgroud)

更新

问题#2:public即使我通过了 flag ,表似乎也被复制到了模式中--table="staging.planet_osm_polygon"。为什么不将其复制到 schema staging

小智 29

试试这个:回复:无法将目录更改为“/root”

显然,您从 root 帐户执行了“su postgres”,因此您仍在 root 的主目录中。最好执行“su - postgres”以确保您已获得所有postgres帐户的环境。阅读“man su”可能会对您有所帮助。

  • sudo 的替代: sudo -Hiu postgres (6认同)

小智 5

对我来说这成功了,注意引号(')

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'
Run Code Online (Sandbox Code Playgroud)

注意-Hiufor sudo,或者使用su - postgres

你也可以将其放入 root 的 cronjob 中crontab -e