在OSX上导入PostgreSQL转储



我以前只使用过MySQL。Postgres对我来说有点不同。我正在尝试将Postgres应用程序用于OSX。我有一个来自开发服务器的数据库转储,我想创建正确的用户角色,并将数据库导入我的本地机器,这样我就可以在家里进行开发(无法远程访问数据库)。

认为我已经创建了用户\du显示具有CreateDB权限的相应用户。然后我使用了\I~/dump.sql,它似乎已经导入了数据库。但是,当我使用\l列出数据库时,它不会显示。因此,我尝试使用psql-U用户名登录,但随后它告诉我"FATAL:数据库用户名不存在。"这不是登录的正确开关吗?这是帮助者说的。

我对一些简单的事情感到沮丧,所以我很感激任何帮助。使用Postgres应用程序,我如何创建必要的密码用户并导入数据库?谢谢你的帮助!

听起来你可能已经将转储加载到了连接到的数据库中。如果你在启动psql时没有指定数据库,那么它将是以你的用户名命名的数据库。不过,这在一定程度上取决于创建转储文件时与pg_dump一起使用的选项。

尝试:

 psql -v ON_ERROR_STOP=1
 CREATE DATABASE mynewdb TEMPLATE template0 OWNER whateverowneruser;
 c mynewdb
 i /path/to/dump/file.sql

就我个人而言,我建议始终使用pg_dump -Fc来创建自定义格式的转储,而不是SQL转储。它们非常容易使用,而且pg_restore比使用psql恢复转储要好得多。

Mac用户:如果您在2023年来到这里,并且使用Mac操作系统,并且您已经使用pg_dump实用程序创建了数据库转储

A。转储采用SQL格式(简单格式)

pg_dump -U <USER_NAME> -h <DATABASE_HOST> <DB_NAME> > sample.sql

然后使用以下命令进行恢复。

首先,使用命令行/终端手动创建数据库

psql  -U <USER_NAME>  -h <DATABSE_HOST>

连接后,使用命令创建数据库

create database test;
q

现在使用以下命令恢复转储,您就完成了:)

psql  -U <USER_NAME>  -d <DATABSE_NAME> -h <DATABSE_HOST> <  sample.sql

对于localhost,使用127.0.0.1作为数据库主机。

(B)转储采用二进制格式

pg_dump -U <USER_NAME> -h <DATABASE_HOST> -d <DB_NAME>  -Fc > sample.dump

然后使用以下命令进行恢复。

首先,使用命令行/终端手动创建数据库

psql  -U <USER_NAME>  -h <DATABSE_HOST>

连接后,使用命令创建数据库

create database test;
q

现在使用以下命令恢复转储。

pg_restore -Fc  -U <USER_NAME>  -d <DATABSE_NAME> -h <DATABSE_HOST>   sample.dump

对于localhost,使用127.0.0.1作为数据库主机。

注意:二进制备份是备份生产数据库的一个更实用的选择,因为它们提供了更快、更可靠、更一致的备份。但是,文本备份在某些情况下可能仍然有用,例如存档或手动检查备份文件。

-U <username>使用psql指定用户名是正确的,但最后一个标记是此处的数据库名称。它解释为您没有指定用户,并且数据库是用户名。尝试在后面添加数据库名称,即psql -U username database

有关psql支持的无数开关的更多信息,请参阅psql-doc。

相关内容

  • 没有找到相关文章

最新更新