我正在像这样转储大型Postgres表:
pg_dump -h myserver -U mt_user --table=mytable -Fc -Z 9 --file mytable.dump mydb
上面创建了一个mytable.dump
文件。我现在想将此转储还原到名为mytable_restored
的新表中。
如何使用pg_restore
命令执行此操作?
答案 0 :(得分:0)
没有pg_restore
选项来重命名表。
我会这样:
-- create a table that is defined like the original
CREATE TABLE mytable_restored (LIKE mytable INCLUDING ALL);
-- copy the table contents
COPY mytable TO '/tmp/mytable.dmp';
COPY mytable_restored FROM '/tmp/mytable.dmp';
答案 1 :(得分:0)
我的答案可能不是该问题的确切答案,但是对于我的情况(包含许多表的目录转储),我改进了Laurenz的答案,这可能很有用。
就我而言,我只需要两个表即可还原到另一个位置。
首先,我在新位置创建了表。
我在toc.dat文件中找到表数据。
pg_restore -Fd <dir_name> -l | grep <table_name>
这可能返回的不仅仅是一行。然后,我们寻找“ TABLE DATA”行。在获得[file_number] .dat.gz文件并将其用于复制命令(如以下psql中)后。
COPY <table_name> from PROGRAM 'zcat /<path>/<file_number>.dat.gz'