簡體   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