Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/126: Рейтинг темы: голосов - 126, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 55
1

Импорт БД psql

11.03.2013, 22:53. Показов 25164. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.

Есть дамп БД, сохраненный на сервере сделанный с помощью pg_dump. Нужно развернуть БД из дампа с помощью psql. Сам я чайник, никогда ничем подобным не занимался. С помощью putty подключился к серваку по SSH, нашел папку, где лежит дамп, что дальше? Как должна правильно выглядеть команда для восстановления БД? И нужно ли сначала предварительно создать пустую БД и в неё восстановить дамп или это делается автоматически? Как указать имя юзера, имя БД, имя дампа?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2013, 22:53
Ответы с готовыми решениями:

QProcess psql
Хочу очень большую таблицу с одной базы данных скопировать в базу данных на постгресе. Вроде бы...

QT, PSQL, insert
Здравствуйте. Разбираюсь с PostgreSQL и QT. Нужно записать данные в базу. Данные три массива типа...

Начало работы с PSQL
Здравствуйте, имею Ubuntu 12.04, установил туда PSQL 9.1. В системе есть только одна учётная запись...

SQL Shell (psql)
Здравствуйте, установил postgresql, запускаю и не знаю, что вписывать. Час уже гуглю, ( P.S....

3
1251 / 967 / 382
Регистрация: 02.09.2012
Сообщений: 2,989
12.03.2013, 15:11 2
Применение команды восстановления очень сильно зависит от того, с какими параметрами была запущена команда pg_dump.

Основные варианты восстановления:
1. psql dbname < backup-file
2. pg_restore backup-file

В обоих случаях очень много тонкостей и возможно потребуется указание доп. параметров, а также выполнение доп. действий перед восстановлением. Напишите как делали бакап.

Читать здесь
0
0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 55
13.03.2013, 21:56  [ТС] 3
Дамп делался примерно так:
pg_dump --username postgres --format c --file "/home/username/arh/dpbase20100517.backup" --schema "dpbase" serv
(это я просто взял пример из сети, по которому делал).

Пока подивились новые вопросы.

Файл (созданный пг_дампом) оказался бинарным, о чем я узнал случайно. Кстати, не нашел, как определить его тип (бинарный/текстовый) в файловом менеджере.

Теперь сами вопросы по восстановлению БД (импорту):

1.Я создал БД командой
createdb -U postgres -T template0 example
При этом без -U postgres появлялось предупреждение, что роль "root" не существует. В интрефейсе pgadmin пользователь для этой БД указан как "postgres". Но к этому пользователю я не знаю пароль, поэтому не могу никак редактировать БД. Как теперь поступить? В связи с этим также отмечу, что я не понял разницы между username и owner. Овнера я вообще не указывал, а в -U ничего кроме postgres указать не получилось, появлялось (при указании user_one вместо postgres):

"не удалось подключиться к базе postgres: ВАЖНО: пользователь "user_one" не прошёл проверку подлинности (Peer)"

Как сейчас правильно сменить пользователя на "user_one"? ("user_one" - это логин при входе в интерфейс пгадмин)

2.Пытался, но не получилось удалить БД. Допустим мне надо удалить всю ту же БД example. Происходило во что:

Bash
1
2
3
root@we:/share/Temp# psql drop database example
psql: предупреждение: лишний аргумент "example" проигнорирован
psql: ВАЖНО:  пользователь "database" не прошёл проверку подлинности (Peer)
Или вот:

Bash
1
2
3
root@we:/share/Temp# psql -U "postgres" dropdb example
psql: предупреждение: лишний аргумент "example" проигнорирован
psql: ВАЖНО:  база данных "dropdb" не существует
Что я не так сделал?
0
1251 / 967 / 382
Регистрация: 02.09.2012
Сообщений: 2,989
14.03.2013, 20:30 4
Цитата Сообщение от ListOFF Посмотреть сообщение
Кстати, не нашел, как определить его тип (бинарный/текстовый) в файловом менеджере.
Кроме как просмотреть содержимое, думаю никак. То есть в этой ситуации предполагается, что тот, кто делает pg_dump, знает, что получится на выходе: бинарный или текстовый формат. В вашем случае "--format c" будет бинарный. См. man pg_dump
Цитата Сообщение от ListOFF Посмотреть сообщение
Теперь сами вопросы по восстановлению БД (импорту):
Прежде всего рассмотрите вариант восстановления через pg_restore.
Bash
1
pg_restore --username user_one --format c -d example dpbase20100517.backup
Для этой команды необходимо:
1. Иметь/создать пользователя user_one
2. Иметь/создать базу данных example
Цитата Сообщение от ListOFF Посмотреть сообщение
При этом без -U postgres появлялось предупреждение, что роль "root" не существует.
Если не указывать параметр -U, используется текущий пользователь в системе. Видимо в этот момент вы работали под root'ом.
Цитата Сообщение от ListOFF Посмотреть сообщение
Но к этому пользователю я не знаю пароль, поэтому не могу никак редактировать БД. Как теперь поступить?
Узнавать пароль, либо восстанавливать (менять) пароль, либо менять метод аутентификации клиентов в файле настроек pg_hba.conf. Попробуйте к createdb добавить ключ -w (не запрашивать пароль). Здесь много зависит от ваших настроек сервера.
Цитата Сообщение от ListOFF Посмотреть сообщение
я не понял разницы между username и owner.
В параметре -U указывается пользователь, с правами которого коннектимся к СУБД! А owner - пользователь, который будет назначен владельцем создаваемых объектов в процессе выполнения createdb. Это могут быть разные пользователи. Например коннектимся под пользователем postgres, а базу данных создаем для user_one.
Цитата Сообщение от ListOFF Посмотреть сообщение
Как сейчас правильно сменить пользователя на "user_one"?
Попытаться для начала создать такого пользователя на новом сервере, но для этого нужен какой-то пользователь для которого вы знаете пароль и он имеет права на создание других пользователей. По умолчанию на пустом сервере имеется только postgres. Если вы не знаете его пароль, начните с его восстановления. Команда в консоли:
createuser -U postgres user_one
Цитата Сообщение от ListOFF Посмотреть сообщение
Пытался, но не получилось удалить БД. Допустим мне надо удалить всю ту же БД example.
Нужен параметр -c. См. man psql. Должно быть что-то типа psql -c "drop database example". Опять же нужно указывать пользователя, которым вы будете коннектится к СУБД (параметр -U).
Цитата Сообщение от ListOFF Посмотреть сообщение
Или вот:
Код Bash
root@we:/share/Temp# psql -U "postgres" dropdb example
Используйте команду dropdb, а не psql. То есть dropdb -U postgres example. См. man dropdb
0
14.03.2013, 20:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.03.2013, 20:30
Помогаю со студенческими работами здесь

Неудачная сборка psql.pro
Собираю драйвер qpsql для проекта. Установил Qt 5.2.1 Отдельно скачал исходники...

PSQL, несколько различных заданий
Добрый день! Имеем две таблицы books(книги) и publishers(издательства) books содержит колонки...

Ошибка psql при закрытии периодов
при выполнении закрытия периода pgsql вылетает с ошибкой ERROR: each UNION query must have the...

Отсутствие Create table в PSQL - FireBird
Господа! Профессионалы! Пользователи наконец! К создателям не обращаюсь, они вряд ли снизойдут....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru