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

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


当前回答

如果您已经创建了一个名为mydb的新数据库,使用psql将.sql转储恢复到该数据库,

psql --file=dump.sql --username=postgres --host=localhost --port=5432 mydb

密码将由PSQL提示

连接选项为

  -h, --host=HOSTNAME      database server host or socket directory (default: "/var/run/postgresql")
  -p, --port=PORT          database server port (default: "5432")
  -U, --username=USERNAME  database user name (default: "xyz")
  -w, --no-password        never prompt for password
  -W, --password           force password prompt (should happen automatically)

其他回答

根据创建转储文件的方式,有两个工具可供参考。

您的第一个引用源应该是手册页pg_dump,因为它创建了转储本身。它说:

Dumps can be output in script or archive file formats. Script dumps are plain-text files containing the SQL commands required to reconstruct the database to the state it was in at the time it was saved. To restore from such a script, feed it to psql(1). Script files can be used to reconstruct the database even on other machines and other architectures; with some modifications even on other SQL database products. The alternative archive file formats must be used with pg_restore(1) to rebuild the database. They allow pg_restore to be selective about what is restored, or even to reorder the items prior to being restored. The archive file formats are designed to be portable across architectures.

所以这取决于它被倾倒的方式。如果使用Linux/Unix,您可能可以使用excellent file(1)命令来找出它-如果它提到ASCII文本和/或SQL,它应该用psql恢复,否则您可能应该使用pg_restore。

恢复非常简单:

psql -U username -d dbname < filename.sql

-- For Postgres versions 9.0 or earlier
psql -U username -d dbname -1 -f filename.sql

or

pg_restore -U username -d dbname -1 filename.dump

查看它们各自的手册页-有相当多的选项会影响恢复的工作方式。在恢复之前,您可能必须清除“活动”数据库或从template0重新创建它们(正如评论中指出的那样),这取决于转储是如何生成的。

遵循以下3个步骤:

启动postgresql server - sudo systemctl Start postgresql 启用same - sudo systemctl Enable postgresql restore命令- pg_restore -h localhost -p 5432 - u postgres -d old_db . sh

假设转储文件在同一目录中

链接:

https://www.postgresqltutorial.com/postgresql-restore-database https://askubuntu.com/questions/50621/cannot-connect-to-postgresql-on-port-5432

对不起,这些解决方案对我不起作用。我在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备份文件的名称。

此解决方案仅适用于Windows。

首先,确保您已经将postgres bin文件夹添加到“Path”环境变量中(在我的例子中,这个文件夹是C:\Program Files\PostgreSQL\12\ bin)。

然后,打开Windows命令解释器(cmd),进入.sql文件所在的文件夹并执行以下命令:

pg_restore -U userName -d database-1 backupfile.sql

例如:

pg_restore -U sam -d SamDataBase -1 SamDataBaseBackup.sql

(它会问你的用户密码,所以确保输入正确,然后点击enter)

普拉维达!

备份与恢复

这是我用来备份,删除,创建和恢复我的数据库(在macOS和Linux上)的组合:

sudo -u postgres pg_dump -Fc mydb > ./mydb.sql
sudo -u postgres dropdb mydb
sudo -u postgres createdb -O db_user mydb
sudo -u postgres pg_restore -d mydb < ./mydb.sql

Misc

-Fc将压缩数据库(格式自定义) 列出PostgreSQL用户:sudo -u postgres psql -c "\du+" 您可能需要在./mydb中添加主机名和日期。Sql,然后修改它: 。/主机名的_mydb_“日期+ Y“% % m % d_ % H % m”的. sql