pg_dump忽略表序列?

时间:2011-01-05 22:46:17

标签: postgresql pg-dump pg-restore

我最近一直在玩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 个答案:

答案 0 :(得分:15)

仅按表转储 - 仅转储表。除了表之外,还需要单独转储序列。

如果你不知道你的序列,你可以在psql中用\d yourtable列出它。您将看到序列所在行中的某些内容,如:nextval('yourtable_id_seq'::regclass')

然后从命令行pgdump -t yourtable_id_seq

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