我已经备份了我的特定表,我想使用以下方法将其还原到新数据库中:
call pg_dump -Fc -h server -d database -U user -p password -v -f dump.sql -t public.table1 -t public.table2
我没有问题。
然后,我想通过使用以下命令创建一个pg_restore新数据库来还原转储:
call pg_restore --clean --create -d temp -h server -p password -U user dump.sql
这给了我一个"数据库临时不存在"错误。据我了解,这应该已经创建了数据库并恢复了它。
但是,我随后手动创建"临时"数据库并运行:
call pg_restore --clean --create -d temp -h server -p password -U user dump.sql
这贯穿始终,但不创建表,并给我一个错误"关系表1"和"关系表2"不存在,只为两个表创建相应的id_sequences。
我真正想要的是不必手动创建新数据库,并且备份中的所有表都可以通过以下方式还原到pg_restore中:
call pg_restore --clean --create -d temp -h server -p password -U user dump.sql
据我了解。
为了创建数据库temp
,pg_restore
需要先连接到不同的数据库。
所以使用-d temp
是行不通的;你必须指定一个现有的数据库,通常postgres
。
pg_restore
将连接到该数据库,发出CREATE DATABASE temp
,连接到temp
并继续还原数据。
,我安装了pgAdmin 4并通过pgAdmin 4 UI进行了还原,而不是通过cmd进行还原:
pg_restore -d <database_name> -p 5432 -Fc -O -a --no-tablespaces --no-privileges -v -U postgres -j 8 <database_name>.dmp