在本地,我使用pgadmin3。然而,在远程服务器上,我没有这样的特权。
我已经创建了数据库备份并复制了它,但是是否有一种方法可以从命令行恢复备份?我只看到与GUI或pg_dumps相关的东西。
在本地,我使用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