我在9.3服务器上备份了一个名为app_data的数据库,使用以下基本命令:
pg_dump -n public -F custom app_data > app_data.pg.dump然后,我尝试在另一台服务器上恢复它(运行9.4),如下所示:
pg_restore -C -d postgres app_data.pg.dump 但是它将所有的表都放在postgres数据库中。手册页说,它将创建和使用一个新的数据库,app_data。
-C --在还原数据库之前创建数据库。...使用此选项时,使用-d命名的数据库仅用于发出初始删除数据库和创建数据库命令。将所有数据还原到存档中显示的数据库名称中。
这不是它要做的。存档中的名称是app_data:
bash-4.2$ pg_restore -l app_data.pg.dump
;
; Archive created at Tue Dec 15 04:16:52 2015
; dbname: app_data
...我做错什么了吗?
发布于 2019-01-09 05:15:40
是的,我应该向postgres报告这种行为,因为使用不同的标志似乎没有效果,只是不起作用。要解决这个问题,请使用:
createdb -h HOST -U USER -W DB_NAME
egrep -v 'EXTENSION.*plpgsql' DUMPFILE.sql | psql -h HOST -U USER -W -d DB_NAME -v ON_ERROR_STOP=1
发布于 2019-03-01 11:11:53
pg_restore -C -d postgres app_data.pg.dump,但它将所有表放在postgres数据库中
这不正是你要求它做的"-d postgres“的论点吗?
如果要加载不同的数据库,需要告诉pg_restore如下:
pg_restore -d app_data -C app_data.pg.dumphttps://dba.stackexchange.com/questions/123690
复制相似问题