2011-01-05 118 views
9

最近我一直在玩PostgreSQL,并且无法理解如何备份和恢复单个表。pg_dump忽略表序列?

我用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... 

它看起来像转储文件没有包括我的自动递增列的顺序。我如何得到它包含?

回答

12

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

如果你不知道你的序列,你可以用psql中的\d yourtable来列出它。你会看到该行的东西你的序列上,看起来像:nextval('yourtable_id_seq'::regclass')

命令行

然后,pgdump -t yourtable_id_seq

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

+0

你知不知道我是否可以指定日-t标志后一个逗号?像这样:pgdump -t mytable,mytabl_id_seq – demersus 2011-01-06 15:50:30

+0

不,但可以指定多个-t开关。像这样: pgdump -t mytable -t mytabl_id_seq – phord 2012-08-10 18:20:57