我有一台自己的机器,其中包含一个Postgres dmp文件。我想在我的网络上的远程虚拟机(例如IP为192.168.0.190,postgresql端口为5432)上还原它。不将转储复制到远程机器上,可否使用pg_restore还原这个转储?因为该转储大小约为12GB,而虚拟机上的磁盘空间只有20GB。
我有一台自己的机器,其中包含一个Postgres dmp文件。我想在我的网络上的远程虚拟机(例如IP为192.168.0.190,postgresql端口为5432)上还原它。不将转储复制到远程机器上,可否使用pg_restore还原这个转储?因为该转储大小约为12GB,而虚拟机上的磁盘空间只有20GB。
您可以在不将转储文件复制到远程主机的情况下通过网络运行还原操作。
只需在获取了转储文件的主机上使用pg_restore
命令并带上-h <hostname>
和-p <port>
(可能需要用-U <username>
作为不同用户进行身份验证),例如:
pg_restore -h 192.168.0.190 -p 5432 -d databasename -U myuser mydump.dump
参考资料:
另一种方法是使用psql:
psql -h 192.168.0.190 -p 5432 -d <数据库名> -U <用户名> -W -f mydump.dump
psql -h mydb.dsdreetr34.eu-west-1.rds.amazonaws.com -p 5432 -d mydbname -U mydbuser -W -f mydatabase-dump.sql
-f, --file=FILENAME execute commands from file, then exit
-W, --password force password prompt (should happen automatically)
在执行 "pg_restore" 命令前,您可以在脚本中传递密码参数,使用 PGPASSWORD="your_database_password"。
scp backup.dump user@remotemachine:~
ssh user@remotemachine "pg_restore -h localhost -p 5432 -U databaseuser -W -F c -d databasename -v backup.dump"
createuser -P -s someusername
。 - nif