我在linux服务器上有一个Postgres 8.4数据库,我已经使用以下命令转储了:
pg_dump --format=c --exclude-table=log --file=/path/to/output my_db
然后我将创建的文件ftp到我的本地Windows 7机器,并尝试使用以下命令将文件恢复到本地Postgres 8.4实例:
pg_restore --create --exit-on-error --verbose c:pathtofile
restore命令生成大量输出,声称它创建了我的数据库,连接到它,然后按预期创建了所有其他表。但是,当我通过pgAdmin查看本地机器上的数据库时,恢复的数据库根本不存在。
在尝试排除故障时,我尝试了以下命令:
pg_restore --create --exit-on-error --verbose --host=blahblah --username=no_one c:pathtofile
当我运行这个命令时,即使给出的主机和用户名是完全没有意义的,我仍然从命令中得到完全相同的输出,没有任何错误。
有没有人遇到过这种情况,或者知道是什么导致了这种情况?
您必须添加要初始连接的有效数据库的名称,否则它只会将内容转储到STDOUT:
pg_restore --create --exit-on-error --verbose --dbname=postgres <backup_file>
这仍然令人困惑,我试图执行这个东西——dbname应该是我想要创建的db。
pg_restore --create --exit-on-error --verbose --dbname=jiradb jiradb.tar
错了! !
字面上应该是——dbname=postgres,——create将根据文件中的名称创建真正的数据库。在我的例子中,我使用
从tar备份进行恢复。pg_restore --create --exit-on-error --verbose --dbname=postgres jiradb.tar