仅pg_restore某些表



我正在尝试编写一个pg_restore命令来仅将某些表(及其数据)还原到我的数据库。

注意:描述的每个命令都以我删除并重新创建数据库开头,并以:-v -x -O -j 8 -h localhost -U username -d database file.dump结束 (出于好奇,我不想使用--clean,因为转储来自的数据库具有不同的名称。

由于pg_restore对我来说效果很好(使用上面的参数),我查看了pg_restore文档,并尝试了这样的事情:

pg_restore -t table1 -t table2 ...(我以这种方式指定了 121 个表)。

但是,我收到如下错误:

pg_restore: creating TABLE people
pg_restore: [archiver (db)] Error from TOC entry 123; 1234 12345 TABLE people dumped_table_username
pg_restore: [archiver (db)] could not execute query: ERROR:  type "hstore" does not exist
LINE 14:     extra_data hstore,
                        ^
    Command was: CREATE TABLE people (
    id integer NOT NULL,
    name string,
    age integer,
    date_of_birt...

我不明白为什么只有在设置-t标志时才会出现问题,但似乎是。

这是怎么回事?


编辑:看起来这是由于hstore而失败的表pg_restore的副本,这是最近被问到的,到目前为止还没有接受的答案。

显然,设置了 -t/--table 标志的pg_restore不会运行转储文件中CREATE EXTENSION命令(因为它们在技术上不是该表的一部分)。我的问题通过在 pg_restore 命令之前手动运行 psql database -c "CREATE EXTENSION hstore;" 来解决。

相关内容

  • 没有找到相关文章

最新更新