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

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


当前回答

备份与恢复

这是我用来备份,删除,创建和恢复我的数据库(在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

其他回答

当需要备份数据或从备份中恢复数据时,使用以下命令:

要创建数据备份,转到您的postgres\ bin\目录,如C:\programfiles\postgres\10\bin\,然后键入以下命令: pg_dump -FC -U ngb -d ngb -p 5432 >C:\BACK_UP\ngb. 090718_after_readupload .backup 要从备份中恢复数据,转到您的postgres\ bin\目录,如C:\programfiles\postgres\10\bin\,然后键入以下命令: C:\programFiles\postgres\10\bin> pg_restore -Fc -U ngb -d ngb -p 5432 <C:\ programFiles\postgres\10\bin 请确保备份文件存在。

您可能需要以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

恢复转储文件

psql -d [Dbname] -U [UserName] -p 5432 < [FileLocation]

恢复一个.SQL文件

pg_restore -U [Username] -d [Dbname] -1 [FileLocation]

如果出现用户身份验证错误,请转到程序文件PSQL/data文件夹中的pg_hba.conf文件,并将“METHOD”更改为“Trust”。 重新启动windows服务中的psql serive (Win + R—> services.msc)。

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

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

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

这招对我很管用:

pg_restore --verbose --clean --no-acl --no-owner --host=localhost --dbname=db_name --username=username latest.dump