在OSX上导入PostgreSQL转储

hs1ihplo  于 2023-02-04  发布在  PostgreSQL
关注(0)|答案(3)|浏览(105)

我以前只使用过MySQL。Postgres对我来说有点不同。我正在尝试使用Postgres.appfor OSX。我有一个来自开发服务器的数据库转储,我想创建正确的用户角色并将数据库导入到我的本地机器,这样我就可以在家里进行开发(无法远程访问数据库)。
我 * 认为 * 我已经创建了用户。\du显示了具有CreateDB权限的相应用户。然后我使用了**\i ~/dump.sql**,它似乎已经导入了数据库。但是,当我使用**\l列出数据库时,它没有显示。因此,我尝试使用psql -U username**登录,但它告诉我“FATAL:数据库 * 用户名 * 不存在。”这不是正确的登录开关吗?这是帮助中所说的。
我对一些简单的事情感到沮丧,所以我感谢任何帮助。使用Postgres.app,我如何创建具有密码的必要用户并导入数据库?感谢任何帮助!

lp0sw83n

lp0sw83n1#

听起来你可能把转储文件加载到了你连接的数据库中。如果你在启动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_dump -Fc比使用psql来恢复转储文件要容易得多,而且pg_restore也好得多。

disbfnqx

disbfnqx2#

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

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

然后为了恢复它使用下面的命令。
首先,使用命令行/terminal手动创建数据库

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作为数据库主机。

fkaflof6

fkaflof63#

-U <username>对于使用 psql 指定用户名是正确的,但此处的最后一个标记是数据库名称。它解释为您未指定用户,数据库是username。请尝试在后面添加数据库名称,例如psql -U username database
有关无数开关 psql 支持的更多信息,请参见psql doc

相关问题