0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 55
|
|
1 | |
Импорт БД psql11.03.2013, 22:53. Показов 25164. Ответов 3
Метки нет (Все метки)
Доброго времени суток.
Есть дамп БД, сохраненный на сервере сделанный с помощью pg_dump. Нужно развернуть БД из дампа с помощью psql. Сам я чайник, никогда ничем подобным не занимался. С помощью putty подключился к серваку по SSH, нашел папку, где лежит дамп, что дальше? Как должна правильно выглядеть команда для восстановления БД? И нужно ли сначала предварительно создать пустую БД и в неё восстановить дамп или это делается автоматически? Как указать имя юзера, имя БД, имя дампа?
0
|
11.03.2013, 22:53 | |
Ответы с готовыми решениями:
3
QProcess psql QT, PSQL, insert Начало работы с PSQL SQL Shell (psql) |
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. Происходило во что:
0
|
1251 / 967 / 382
Регистрация: 02.09.2012
Сообщений: 2,989
|
||||||
14.03.2013, 20:30 | 4 | |||||
Кроме как просмотреть содержимое, думаю никак. То есть в этой ситуации предполагается, что тот, кто делает pg_dump, знает, что получится на выходе: бинарный или текстовый формат. В вашем случае "--format c" будет бинарный. См. man pg_dump
Прежде всего рассмотрите вариант восстановления через pg_restore.
1. Иметь/создать пользователя user_one 2. Иметь/создать базу данных example Если не указывать параметр -U, используется текущий пользователь в системе. Видимо в этот момент вы работали под root'ом. Узнавать пароль, либо восстанавливать (менять) пароль, либо менять метод аутентификации клиентов в файле настроек pg_hba.conf. Попробуйте к createdb добавить ключ -w (не запрашивать пароль). Здесь много зависит от ваших настроек сервера. В параметре -U указывается пользователь, с правами которого коннектимся к СУБД! А owner - пользователь, который будет назначен владельцем создаваемых объектов в процессе выполнения createdb. Это могут быть разные пользователи. Например коннектимся под пользователем postgres, а базу данных создаем для user_one. Попытаться для начала создать такого пользователя на новом сервере, но для этого нужен какой-то пользователь для которого вы знаете пароль и он имеет права на создание других пользователей. По умолчанию на пустом сервере имеется только postgres. Если вы не знаете его пароль, начните с его восстановления. Команда в консоли: createuser -U postgres user_one Нужен параметр -c. См. man psql. Должно быть что-то типа psql -c "drop database example". Опять же нужно указывать пользователя, которым вы будете коннектится к СУБД (параметр -U). Используйте команду dropdb, а не psql. То есть dropdb -U postgres example. См. man dropdb
0
|
14.03.2013, 20:30 | |
14.03.2013, 20:30 | |
Помогаю со студенческими работами здесь
4
Неудачная сборка psql.pro PSQL, несколько различных заданий Ошибка psql при закрытии периодов Отсутствие Create table в PSQL - FireBird Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |