-1

我正在尝试编写一个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 的副本,这是最近被问到的,到目前为止还没有接受的答案。

4

1 回答 1

1

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

于 2015-01-29T18:00:50.140 回答