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

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


当前回答

使用压缩转储保存和恢复完全相同的状态

其他答案分别给出了所有的关键位,但希望这将提供“只是工作保存和恢复到精确状态”的命令对。

转储到文件mydb.psql:

PGPASSWORD=mypassword pg_dump -U my_username -h localhost mydb -Fc -f mydb.psql

恢复:

PGPASSWORD=mypassword pg_restore -U my_username -h localhost \
  --clean -d mydb -v mydb.psql

一些旗帜:

-Fc:格式压缩,而不是明文。 tmp文件。psql说: tmp。psql: PostgreSQL自定义数据库转储- v1.14-0 ——clean:在恢复目标DB之前销毁它,从而返回到完全相同的原始状态。 转储之后创建的任何数据都将丢失。

PGPASSWORD, -U和-h当然可以根据您的登录方法进行修改,例如,如果没有PGPASSWORD,您将提示输入密码,如果您在本地设置peer auth,这些都不需要。

在Ubuntu 22.04和PostgreSQL 14.5上测试。

其他回答

如果您使用pg_dump创建了备份,您可以通过以下方式轻松地恢复它:

打开命令行窗口 进入Postgres bin文件夹。例如:cd "C:\ProgramFiles\PostgreSQL\9.5\bin" 输入恢复数据库的命令。例如:psql.exe -U postgres -d YourDatabase -f D:\Backup\.sql 输入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”

遵循以下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

我在运行pg_dump时遇到身份验证问题,所以我移动了转储文件

mv database_dump /tmp

进入临时目录,然后运行

su -u postgres
cd /tmp
pg_restore database_dump

如果您有一个大型数据库转储,您可能只想创建另一个目录,当前用户和postgres用户可以访问该目录,并将数据库转储文件放入该目录。

POSTGRESQL 9.1.12

转储文件:

pg_dump -U user db_name > archive_name.sql

输入用户密码并按enter键。

恢复:

psql -U user db_name < /directory/archive.sql

输入用户密码并按enter键。