如何从PostgreSQL中的转储文件恢复特定模式?

xriantvc  于 2022-11-04  发布在  PostgreSQL
关注(0)|答案(2)|浏览(220)

我有一个转储文件(大小约为5 GB),它是通过以下命令获取的:

pg_dump -U postgres -p 5440 MYPRODDB > MYPRODDB_2022.dmp

数据库包含多个模式(比如模式A、B、C和D),但我只需要恢复一个模式(模式A)。
下面的命令不起作用,并给出了错误:

pg_restore -U postgres -d MYPRODDB -n A -p 5440 < MYPRODDB_2022.dmp

pgrestore:错误:输入文件似乎是一个文本格式转储。请使用psql。

cbeh67ev

cbeh67ev1#

你不能用普通格式转储,这就是为什么你总是使用不同格式的原因之一,除非你需要一个SQL脚本。

holgip5t

holgip5t2#

如果您想坚持使用纯文本转储:

pg_dump -U postgres -p 5440 -n A MYPRODDB > MYPRODDB_2022.dmp

psql -U postgres -d MYPRODDB  -p 5440 -f  MYPRODDB_2022.dmp

尽管如上所述转储回同一数据库将引发错误,但除非您使用--clean或其缩写形式-c创建命令,以便在恢复现有对象之前删除它们:
-c键
--清洁
在输出创建数据库对象的命令之前,输出清除(删除)数据库对象的命令。(除非还指定了--if-exists,否则,如果目标数据库中不存在任何对象,还原可能会生成一些无害的错误消息。)
当发出存档(非文本)输出文件时,此选项被忽略。对于存档格式,您可以在调用pg_restore时指定此选项。
可能还可以添加--if-exists
--如果存在
清除数据库对象时使用条件命令(即添加IF EXISTS子句)。除非同时指定了--clean,否则此选项无效。

相关问题