Импортировать дамп 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.