Импортировать дамп PostgreSQL в OSX

Я только раньше использовал MySQL. Postgres немного отличается от меня. Я пытаюсь использовать Postgres.app для OSX. У меня есть дамп базы данных с нашего сервера разработки, и я хочу создать правильные роли пользователей и импортировать базу данных на свой локальный компьютер, чтобы я мог заниматься разработкой дома (не могу получить доступ к базе данных удаленно).

Я думаю, что создал пользователя. \ du показывает соответствующего пользователя с разрешением CreateDB. Затем я использовал \i ~/dump.sql, который, кажется, импортировал базу данных. Однако, когда я использую \ l для просмотра баз данных, он не отображается. Затем я попытался войти в систему с помощью psql -U username, но затем он сказал мне: "FATAL: имя пользователя базы данных не существует". Разве это не правильный переключатель для входа? Это то, что сказала помощь.

Я разочарован чем-то простым, поэтому я ценю любую помощь. С Postgres.app, как я могу создать необходимых пользователей с паролями и импортировать базу данных? Спасибо за любую помощь!

3 ответа

Решение

Похоже, вы, вероятно, загрузили дамп в базу данных, к которой вы были подключены. Если вы не указали базу данных при запуске 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.

      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

Для локального хоста используйте 127.0.0.1 в качестве хоста базы данных.

-U <username> правильно указывать имя пользователя с помощью psql, но последний токен - это имя базы данных. Это означает, что вы не указали ни одного пользователя, а в базе данных указано имя пользователя. Попробуйте добавить имя базы данных после, т.е. psql -U username database,

Смотрите документ psql для получения дополнительной информации о множестве переключателей, которые поддерживает psql.

Другие вопросы по тегам