在OSX上导入PostgreSQL转储

时间:2014-09-29 23:58:30

标签: sql database macos postgresql postgres.app

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

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

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

2 个答案:

答案 0 :(得分:2)

听起来您可能已将转储加载到您连接到的数据库中。如果您在启动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转储。他们使用 lot 更容易使用,pg_restore比使用psql恢复转储要好得多。

答案 1 :(得分:1)

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

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