在本地,我使用pgadmin3。然而,在远程服务器上,我没有这样的特权。

我已经创建了数据库备份并复制了它,但是是否有一种方法可以从命令行恢复备份?我只看到与GUI或pg_dumps相关的东西。


当前回答

如果你有一个备份SQL文件,那么你可以很容易地恢复它。 只要按照下面给出的说明做就可以了

1. At first, create a database using pgAdmin or whatever you want (for example my_db is our created db name)
2. Now Open command line window
3. Go to Postgres bin folder. For example:  cd "C:\ProgramFiles\PostgreSQL\pg10\bin"
4. Enter the following command to restore your database: psql.exe -U postgres -d my_db -f D:\Backup\backup_file_name.sql 

如果需要,请为postgres用户输入密码,然后让postgres执行它的工作。查看恢复进程。

其他回答

请看下面的例子,它的工作

C:/Program Files/PostgreSQL/9.4/bin\pg_restore.exe——host localhost——port 5432——username "postgres"——dbname "newDatabase"——no-password——verbose

“C: \用户下载\优\ \新下载\ DB.backup”

对不起,这些解决方案对我不起作用。我在10号邮差。在Linux上:

我必须将目录更改为pg_hba.conf。 我必须编辑该文件以将方法从peer更改为md5 重启服务:service postgresql-10 Restart 更改目录到我的备份。SQL被定位并执行: PSQL postgres -d database_name -1 -f backup.sql -database_name是数据库的名称 - backup。SQL是我的. SQL备份文件的名称。

1. 打开终端。

2. 使用以下命令备份数据库

your postgres bin -> /opt/PostgreSQL/9.1/bin/

源数据库服务器-> 192.168.1.111

您的备份文件位置和名称-> /home/dinesh/db/mydb.backup

您的源数据库名称-> mydatabase

/opt/PostgreSQL/9.1/bin/pg_dump --host '192.168.1.111' --port 5432 --username "postgres" --no-password  --format custom --blobs --file "/home/dinesh/db/mydb.backup" "mydatabase"

3.恢复mydb。备份文件到目标。

您的目标服务器-> localhost

您的目标数据库名称-> mydatabase

创建用于恢复备份的数据库。

/opt/PostgreSQL/9.1/bin/psql -h 'localhost' -p 5432 -U postgres -c "CREATE DATABASE mydatabase"

恢复备份。

/opt/PostgreSQL/9.1/bin/pg_restore --host 'localhost' --port 5432 --username "postgres" --dbname "mydatabase" --no-password --clean "/home/dinesh/db/mydb.backup"
Backup:  $ pg_dump -U {user-name} {source_db} -f {dumpfilename.sql}

Restore: $ psql -U {user-name} -d {desintation_db} -f {dumpfilename.sql}

使用GZIP进行备份和恢复

对于较大的数据库,这是非常好的

备份

pg_dump -U user -d mydb | gzip > mydb.pgsql.gz

恢复

gunzip -c mydb.pgsql.gz | psql dbname -U user

https://www.postgresql.org/docs/14/backup-dump.html