Я сделал бэкап нужной мне базы:
pg_dump -U postgres basename -f dumpbasee.sql
Созданный файл скачал себе на компьютер и разместил в /home/namedir.
И как теперь его распаковать? Я пробовал такую команду:
psql -U postgres -d basename -f db_name.sql
А также:
psql -f dumpbase.sql
В ответ выдает:
psql: FATAL: database "dumpbase" does not exist
Я подозреваю, что мало выйти в консоли на тот же уровень, где находится бэкап. В папке var/lib/postgresql сохраняются сделанные бэкапы, и мне кажется, что туда и надо запихнуть мой дамп. ВОт только права папки не позволяют.
Что делать?
Уточнение: все действия я совершал через рут и пользователя postgres:
sudo su - postgres
gill-sama: я создал БД и проверил ее наличие через psql -l, она есть в списке, называется atel_db.sql. Пробую делать импорт:
psql -U postgres -d atelier -f atel_db.sql
Уточню: нужная БД называется atelier, а сам дамп - atelier_db.sql. Так вот, на команду выше пишет, что нет такого файла. Перепробовал разные имена после -f из тех, что были в спсике psql -l, без толку.
Команда ведь так должна выглядеть?
psql -U ИМЯЮЗЕРА -d ИМЯ_БД_В_ДАМПЕ -f ИМЯ_БД_В_ЛОКАЛКЕ_КУДА_ИМПОРТИРОВАТЬ.sql
Евгений: перечитал свои комментарии и не понял, о чем вы.
Что касается так и сделал сейчас - все равно выдает, что нет такого файла. А я в консоли зашел ровно на тот же уровень, где этот файл находится, зашел в sudo su - postgres и вбил команду (atelier - имя созданной БД, atelier_db.sql - имя дампа):
psql atelier < dump_filename.sql
Ошибка:
-su: atelier_db.sql: Нет такого файла или каталога
Вот именно, что вы не понимаете разницу:
1. между пользователями системы и пользователями базы данных
2. между именем базы postgresql и именем файла с базой
и т.д. и т.п.
Кроме того, sudo su - postgres - это какое-то масло масляное. Вам для начала надо понять, что вы вводите. Судя по этой команде, вы не понимаете, а просто копируете откуда-то. Правильно:
1. либо su - postgres
2. либо sudo -u postgres -i
Вместе это масло масляное. Кроме того, ваша команда изменила текущий каталог, поэтому вам надо привести полное имя для файла. Ну и кроме того, лучше psql запускать с тем пользователем (-U пользователь), кому должна принадлежать база и данные в ней. Пользователь postgresql - это как root в системе, только в PostgreSQL. Да, системные пользователи и пользователи PostgreSQL - это тоже разные сущности.
В общем, правильно сначала разобраться в самых основах как Linux (кто такие пользователи, каталоги, файлы, как работают команды su и sudo), затем в основах PostgreSQL. Слепое копирование и комбинирование команд - это плохой способ изучать что-то и делать работу. Понимаю, что хочется побыстрее. Но если вы банальную операцию не можете сделать, которую опытный пользователь, разбуженный в 4 утра, не задумываясь сделает, то все же надо начинать с основ.
гугли pg_restore, а вообще поставь pgadmin, там это делается в 2 клика. Коннектишь его к серверу постгрес, создаешь пустую базу и выгружаешь дамп туда, причем все настройки в графическом представлении сразу на виду, что очень удобно для начинающего - что бы не грузиться лишней информацией и для опытного - легкость в управлении множеством различных серверов и бд.
Pavel Denisov: я не сразу заметил, что у него *.sql
если человек плохо ориентируется в терминале, то по себе могу сказать,что ему лучше разбираться в этом постепенно, с каждой новой задачей по чуть чуть. А пгадмин отлично работает, интересно как можно удобно работать с десятком серверов, качать оттуда данные, мониторить их через psql? Это же сколько печатать надо? А если еще и запросы какие сложные надо отправить? С постоянными визуальными глюками терминала и его линейной структурой ввода это не очень удобно, а в пгадмине все делается в считанные клики.
Я сам еще на прошлой неделе все делал исключительно через psql, но как только открыл pgadmin, офигел от простоты и скорости использования.