pg_dump忽略表序列?

20

最近我一直在研究PostgreSQL,但是不太明白如何备份和还原单个表格。

我使用pgadmin3备份了数据库中的一个表格,以便将其复制到另一个服务器上。但是当我尝试对该文件进行pg_restore时,出现错误消息说序列不存在:

pg_restore: [archiver (db)] could not execute query: ERROR:  relation "businesses_id_seq" does not exist
    Command was: 
CREATE TABLE businesses (
    id integer DEFAULT nextval('businesses_id_seq'::regclass) NOT NULL,
    name character varyin...

看起来转储文件没有包括我的自增列的序列。我该如何让它包含呢?

1个回答

28

只通过表进行转储 - 仅转储表。除了表之外,您还需要单独转储序列。

如果您不知道自己的序列,可以在psql中使用\d yourtable来列出它。您将在包含序列的行上看到类似于:nextval('yourtable_id_seq'::regclass')的内容。

然后从命令行运行pgdump -t yourtable_id_seq

http://www.postgresql.org/docs/9.0/static/app-pgdump.html


你知道我是否可以在 -t 标志后面指定一个逗号吗?像这样:pgdump -t mytable,mytabl_id_seq - demersus
7
不可以,但是你可以指定多个“-t”开关。格式如下:pgdump -t mytable -t mytabl_id_seq - Phil Hord

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接