在本地,我使用pgadmin3。然而,在远程服务器上,我没有这样的特权。
我已经创建了数据库备份并复制了它,但是是否有一种方法可以从命令行恢复备份?我只看到与GUI或pg_dumps相关的东西。
在本地,我使用pgadmin3。然而,在远程服务器上,我没有这样的特权。
我已经创建了数据库备份并复制了它,但是是否有一种方法可以从命令行恢复备份?我只看到与GUI或pg_dumps相关的东西。
当前回答
我没有看到这里提到转储文件扩展名(*.dump)。
这个解决方案对我很有效:
我有一个转储文件,需要恢复它。
首先,我尝试用pg_restore这样做,并得到:
pg_restore: error: input file appears to be a text format dump. Please use psql.
我用psql做了,工作得很好:
psql -U myUser -d myDataBase < path_to_the_file/file.dump
其他回答
如果你正在使用docker,这个答案可能会有帮助。
启动容器 Docker start <postgres_container_id> .使用实例 访问容器内的bash Docker exec -it <postgres_container_id> bash 将.tar备份文件复制到docker容器(在另一个窗口中) Docker cp postgres_dump.tar <postgres_container_id>:/ 恢复备份 pg_restore -c -U < postgres_user > -d <password> -v "postgres_dump.tar 输入密码
备份与恢复
这是我用来备份,删除,创建和恢复我的数据库(在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
下面是我用来恢复数据库的pg_dump版本:
pg_restore -h localhost -p 5432 -U postgres -d my_new_database my_old_database.backup
或者使用psql:
psql -h localhost -U postgres -p 5432 my_new_database < my_old_database.backup
-h主机,-p端口,-u登录用户名,-d数据库名称
请看下面的例子,它的工作
C:/Program Files/PostgreSQL/9.4/bin\pg_restore.exe——host localhost——port 5432——username "postgres"——dbname "newDatabase"——no-password——verbose
“C: \用户下载\优\ \新下载\ DB.backup”
恢复转储文件
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)。