我有一个postgres数据库,我想备份到文件并就地还原。我已经使用pg_dump命令将数据库转储到文件中,并且我想从转储中覆盖和还原数据库。运行psql -U my_user my_db < my_dump.sql
会输出许多有关已存在项目的错误,例如:
SET
SET
SET
SET
SET
set_config
------------
(1 row)
SET
SET
SET
SET
CREATE EXTENSION
COMMENT
CREATE EXTENSION
COMMENT
SET
SET
ERROR: relation "attr" already exists
ALTER TABLE
ERROR: relation "attr_id_seq" already exists
ALTER TABLE
ALTER SEQUENCE
ERROR: relation "grid" already exists
ALTER TABLE
ERROR: relation "grid_id_seq" already exists
ALTER TABLE
ALTER SEQUENCE
ERROR: relation "layer" already exists
ALTER TABLE
ERROR: relation "meta" already exists
ALTER TABLE
ERROR: relation "meta_id_seq" already exists
ALTER TABLE
ALTER SEQUENCE
ERROR: relation "object" already exists
ALTER TABLE
ERROR: relation "object_id_seq" already exists
ALTER TABLE
ALTER SEQUENCE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
COPY 0
COPY 0
ERROR: duplicate key value violates unique constraint "layer_pkey"
DETAIL: Key (id)=(0) already exists.
CONTEXT: COPY layer, line 1
COPY 0
COPY 0
COPY 0
setval
--------
1
(1 row)
setval
--------
1
(1 row)
setval
--------
1
(1 row)
setval
--------
1
(1 row)
ERROR: relation "attr_grid_id_layer_id_key" already exists
ERROR: multiple primary keys for table "attr" are not allowed
ERROR: relation "grid_i_j_key" already exists
ERROR: multiple primary keys for table "grid" are not allowed
ERROR: multiple primary keys for table "layer" are not allowed
ERROR: multiple primary keys for table "meta" are not allowed
ERROR: multiple primary keys for table "object" are not allowed
ERROR: constraint "attr_grid_id_fkey" for relation "attr" already exists
有什么方法可以从现有数据库之上的转储中还原,还是必须创建一个干净的新数据库?