2011-01-05 124 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