在本地,我使用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)

其他回答

您可能需要以postgres身份登录,以便对数据库具有完全的权限。

su - postgres
psql -l                      # will list all databases on Postgres cluster

pg_dump / pg_restore

  pg_dump -U username -f backup.dump database_name -Fc 

指定备份文件的格式:

c将使用自定义的PostgreSQL格式,压缩后的备份文件大小最小 D表示目录,其中每个文件是一个表 t用于TAR存档(大于自定义格式) -h/——host运行服务器的机器的主机名 -W/——password在连接数据库之前强制pg_dump提示输入密码

恢复备份:

   pg_restore -d database_name -U username -C backup.dump

参数-C应该在导入数据之前创建数据库。如果它不工作,你总是可以创建数据库,如。使用命令(以postgres用户或其他有创建数据库权限的用户)createdb db_name -O owner

pg_dump - psql

如果你没有指定参数-F默认的纯文本SQL格式被使用(或与-F p).那么你不能使用pg_restore。可以使用psql导入数据。

备份:

pg_dump -U username -f backup.sql database_name

恢复:

psql -d database_name -f backup.sql

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

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

转储到文件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上测试。

如果你有一个备份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执行它的工作。查看恢复进程。

恢复postgres备份文件取决于最初是如何进行备份的。

如果你使用pg_dump和-F c或-F d,你需要使用pg_restore,否则你可以使用

psql -h localhost -p 5432 -U postgres <备份文件

9种备份和恢复postgres数据库的方法

试试这个:

psql -U <username> -d <dbname> -f <filename>.sql

从。sql文件恢复数据库psql