Как восстановить файл дампа PostgreSQL в базы данных Postgres?

У меня есть дамп с.SQLасширение @ (на самом деле это простой текстовый файл SQL). Я хочу восстановить его в мои созданные базы данных. Я используюpgAdmin III, и когда я использую его «Мастер восстановления», он не выделяет кнопку «Восстановить». Вместо этого он ожидает.backup расширение файла

Я пытался использовать команды shell для восстановления дампа, но он все равно не работал.

Я новичок в этом. Если бы кто-нибудь мог помочь мне, я был бы обязан.

Редактироват

Я использовал следующую команду для панели Shell SQL в PostGres, сидя в newTestDB.

newTestDB-# \i E:\db-rbl-restore-20120511_Dump-20120514.sql

По-прежнему выдает ту же ошибку («Отказано в доступе»).

После повышения разрешений он просто показывает мне таблицы по умолчанию в PostgreSQL:

      List of tablespaces
Name       |  Owner   | Location
-----------+----------+----------
pg_default | postgres |
pg_global  | postgres |

(2 rows)

Я не знаю, что делать для импорта / восстановления базы данных из файла SQL.

Ответы на вопрос(7)

1.откройте терминал.

2. сделайте резервную копию вашей базы данных с помощью следующей команды

your postgres bin - /opt/PostgreSQL/9.1/bin

ваш исходный сервер базы данных - 192.168.1.111

Ваше расположение и имя файла резервной копии - /home/dinesh/db/mydb.backu

ваше имя базы данных источника - mydatabase

/ opt / PostgreSQL / 9.1 / bin / pg_dump --host '192.168.1.111' --port 5432 --пользователь "postgres" --no-пароль - отформатировать пользовательские --blobs --file "/ home / dinesh / db / mydb.backup "" mydatabase "

3. восстановить файл mydb.backup в место назначения.

ваш целевой сервер - localhost

имя вашей целевой базы данных - mydatabase

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

/ opt / PostgreSQL / 9.1 / bin / psql -h 'localhost' -p 5432 -U postgres -c "CREATE DATABASE mydatabase"

восстановить резервную копию.

/ opt / PostgreSQL / 9.1 / bin / pg_restore --host 'localhost' --port 5432 --username "postgres" --dbname "mydatabase" --no-password --clean "/ home / dinesh / db / mydb .резервный"

вам потребуется установить разрешения на уровне базы данных, которые позволят владельцу схемы восстановить дамп.

как была сделана ваша резервная копия, поэтому общий ответ: Обычно сpsql орудие труда

В зависимости от того, чтоpg_dump был задан дамп, файл SQL может иметь разные наборы команд SQL. Например, если вы указалиpg_dump чтобы сбросить базу данных используя--clean а также--schema-only, вы не можете ожидать, что сможете восстановить базу данных из этого дампа, поскольку не будет никаких команд SQL для копирования (или вставки, если--inserts используется) фактические данные в таблицах. Подобный дамп будет содержать только команды DDL SQL и сможет воссоздать схему, но не фактические данные.

Типичный дамп SQL восстанавливается с помощьюpsql:

psql (connection options here) database  < yourbackup.sql

или отpsql сессия,

psql (connection options here) database
database=# \i /path/to/yourbackup.sql

В случае резервных копий, сделанных с помощьюpg_dump -Fc («пользовательский формат»), который является не простым файлом SQL, а сжатым файлом, вам нужно использоватьpg_restore орудие труда

Если вы работаете над Unix-подобным, попробуйте следующее:

man psql
man pg_dump
man pg_restore

иначе взгляни на HTML-документы. Удачи

Pg_restore команда, которую вы можете восстановить базу данных Postgres

Первый открытый тип терминала

sudo su postgres

Создать новую базу данных

createdb [имя базы данных] -O [владелец]

createdb test_db [-O openerp]

pg_restore -d [Имя базы данных] [путь к файлу дампа]

pg_restore -d test_db /home/sagar/Download/sample_dbump

Дождитесь завершения восстановления базы данных.

Помните, что файл дампа должен иметь права на чтение, запись, выполнение, поэтому для этого вы можете применить команду chmod

что psql.exe довольно требователен к наклонной плоскости, по крайней мере, в окнах (как показано выше).

Вот пример. В окне cmd:

C:\Program Files\PostgreSQL\9.2\bin>psql.exe -U postgres
psql (9.2.4)
Type "help" for help.

postgres=# \i c:\temp\try1.sql    
c:: Permission denied
postgres=# \i c:/temp/try1.sql
CREATE TABLE
postgres=#

Вы можете увидеть, что это не работает, когда я использую "нормальные" косые черты окон в\i вызов. Тем не мениеи то и друго стили косой черты работают, если вы передаете их в качестве входных параметровpsql.exe, например

C:\Program Files\PostgreSQL\9.2\bin>psql.exe -U postgres -f c:\TEMP\try1.sql
CREATE TABLE

C:\Program Files\PostgreSQL\9.2\bin>psql.exe -U postgres -f c:/TEMP/try1.sql
CREATE TABLE

C:\Program Files\PostgreSQL\9.2\bin>

Проблема с твоей попыткойpsql командная строка - это направление слеша:

newTestDB-# /i E:\db-rbl-restore-20120511_Dump-20120514.sql   # incorrect
newTestDB-# \i E:/db-rbl-restore-20120511_Dump-20120514.sql   # correct

Чтобы было ясно,psql команды начинаются с обратной косой черты, поэтому вы должны были поставить\i вместо. В результате вашей опечатки произошло то, чтоpsql игнорировал все, пока не нашел первый\, за которым последовалоdb, а также\db бываетpsql команда для перечисления табличные места, поэтому вывод был Список табличных пространств. Как вы сказали, это был не список «таблиц по умолчанию в PostgreSQL

Кроме того, кажется, чтоpsql ожидаетfilepath аргумент для разграничения каталогов с помощью прямой косой черты независимо от ОС (таким образом, в Windows это было бы нелогично).

Стоит отметить, что ваша попытка «повышения разрешений» не имела никакого отношения к результату команды, которую вы пытались выполнить. Кроме того, вы не сказали, что стало причиной ошибки «Отказано в доступе».

Наконец, расширение в файле дампа не имеет значения, фактически вам даже не нужно расширение. Верно,pgAdmin предлагает.backup расширение при выборе файла резервной копии, но вы можете сделать его как угодно, в том числе без расширения вообще. Проблема в том, чтоpgAdminажется, что @ разрешает только «Восстановление» из дампов «Custom или tar» или «Directory» (по крайней мере, так происходит в версии приложения для Mac OS X), поэтому просто используйтеpsql \i команда, как показано выше.

я также смог заставить его работать. Предостережение заключается в том, что при вводе psql из инструмента pgAdmin GUI с помощью выбора плагинов ... Консоль PSQL устанавливает учетные данные и уровень разрешений для сеанса psql, поэтому у вас должны быть разрешения Admin или CRUD для таблицы и, возможно, также Admin для БД (не знаю наверняка об этом). Команда в консоли psql будет иметь следующий вид:

postgres=# \i driveletter:/folder_path/backupfilename.backup

гдеpostgres = # - это приглашение psql, а не часть команды.

Файл .backup будет содержать команды, используемые для создания таблицы, поэтому вы можете также получить в файле такие вещи, как команды «ALTER TABLE ...», которые выполняются, но сообщаются как ошибки. Я полагаю, что вы всегда можете удалить эти команды перед запуском восстановления, но вы, вероятно, лучше, чем сожалеете, хранить их там, поскольку они вряд ли приведут к сбою восстановления данных. Но всегда проверяйте, чтобы данные, которые вы хотели восстановить, действительно были там. (Извините, если кому-то это кажется покровительственным советом, но это упущение, которое может случиться с кем бы то ни было, независимо от того, как долго он занимался этим делом - отвлекающий момент от коллеги, телефонный звонок и т. Д., И легко забыл этот шаг. Я сделал это сам, используя другие базы данных в начале своей карьеры, и подумал: «Ну и дела, почему я не вижу никаких данных из этого запроса?» Ответ был, что данные так и не были восстановлены, и я просто потратил 2 часа, пытаясь чтобы выследить подозреваемые возможные ошибки, которых не было.)

ВАШ ОТВЕТ НА ВОПРОС