繁体   English   中英

从pg_dump还原数据库

[英]Restore database from pg_dump

我有非空的数据库,并通过以下方式进行了备份:

pg_dump myBase > backup.sql

然后,我必须删除db,现在我正尝试从backup.sql还原它。 所以首先我通过以下方式创建数据库:

create database myBase

psql授予特权

grant all privileges on database "myBase" to myUser

然后尝试通过以下方式从pg_dump中恢复:

pg_dump myBase < backup.sql

而且我没有收到任何错误,但是当我通过\\dt检查表时,它完全是空的。 我也尝试过还原:

psql -h localhost -d myBase-U myUser-f backup.sql (无错误,但也没有表)

psql myBase < backup.sql (如上)

我对dbs有一些经验,所以我认为对于经验丰富的用户来说应该是显而易见的。

无法重现该问题:

postgres=# create database so;
CREATE DATABASE
postgres=# \c so
You are now connected to database "so" as user "postgres".
so=# create table so(i int);
CREATE TABLE
so=# insert into so values (1);
INSERT 0 1
so=# \! pg_dump so > /tmp/so.sql
so=# \c postgres
You are now connected to database "postgres" as user "postgres".
postgres=# drop database so;
DROP DATABASE
postgres=# create database so;
CREATE DATABASE
postgres=# \c so
You are now connected to database "so" as user "postgres".
so=# \dt
No relations found.
so=# \! psql so -f /tmp/so.sql
SET
SET
SET
SET
SET
SET
CREATE EXTENSION
COMMENT
SET
SET
SET
CREATE TABLE
ALTER TABLE
REVOKE
REVOKE
GRANT
GRANT
so=# \dt
        List of relations
 Schema | Name | Type  |  Owner
--------+------+-------+----------
 public | so   | table | postgres
(1 row)

遇到相同的问题,请在此处找到解决方案: 无法使用其他用户名从pg_dump恢复psql数据库

pg_dump dbname -O -x> backupname.sql

-O <-无所有者不输出命令以设置对象的所有权以匹配原始数据库

-x <-无特权防止转储访问特权(授予/撤销命令)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM