Импортировать дамп SQL в базу данных PostgreSQL - PullRequest
379 голосов
/ 27 июля 2011

Мы переключаем хосты, и старый предоставил дамп SQL базы данных PostgreSQL нашего сайта.

Теперь я пытаюсь настроить это на локальном сервере WAMP, чтобы проверить это.

Единственная проблема в том, что у меня нет идеи, как импортировать эту базу данных в PostgreSQL 9, который я настроил.

Я пробовал pgAdmin III, но не могу найтифункция импорта.Поэтому я просто открыл редактор SQL, вставил туда содержимое дампа и выполнил его, он создает таблицы, но продолжает выдавать ошибки, когда пытается вставить данные в него.

ERROR:  syntax error at or near "t"
LINE 474: t 2011-05-24 16:45:01.768633 2011-05-24 16:45:01.768633 view...

The lines:
COPY tb_abilities (active, creation, modtime, id, lang, title, description) FROM stdin;
t   2011-05-24 16:45:01.768633  2011-05-24 16:45:01.768633  view    nl ...  

I 'Мы также пытались сделать это с помощью командной строки, но я не могу найти нужную мне команду.

Если я сделаю

psql mydatabase < C:/database/db-backup.sql;

Я получу ошибку

ERROR:  syntax error at or near "psql"
LINE 1: psql mydatabase < C:/database/db-backu...
        ^

Какой лучший способ импортировать базу данных?

Ответы [ 10 ]

621 голосов
/ 27 июля 2011
psql databasename < data_base_dump

Это команда, которую вы ищете.

Осторожно: перед импортом необходимо создать databasename.Ознакомьтесь с Документами PostgreSQL Глава 23. Резервное копирование и восстановление .

308 голосов
/ 03 октября 2013

Вот команда, которую вы ищете.

psql -h hostname -d databasename -U username -f file.sql
97 голосов
/ 20 августа 2012

Я считаю, что вы хотите запустить в PSQL:

\i C:/database/db-backup.sql
46 голосов
/ 28 октября 2014

Это сработало для меня:

sudo -u postgres psql db_name < 'file_path'
36 голосов
/ 17 мая 2015

Я не уверен, что это работает для ситуации ОП, но я обнаружил, что выполнение следующей команды в интерактивной консоли было для меня наиболее гибким решением:

\i 'path/to/file.sql'

Просто убедитесь, что вы 'Вы уже подключены к правильной базе данных.Эта команда выполняет все команды SQL в указанном файле.

33 голосов
/ 16 декабря 2016

Работает довольно хорошо, в командной строке все аргументы обязательны, -W для пароля

psql -h localhost -U user -W -d database_name -f path/to/file.sql
21 голосов
/ 27 мая 2015

Просто для забавы: если ваш дамп сжат, вы можете сделать что-то вроде

gunzip -c filename.gz | psql dbname

Как упоминал Джейкоб, Документы PostgreSQL описывают все это очень хорошо.

5 голосов
/ 26 мая 2015

Я использую:

cat /home/path/to/dump/file | psql -h localhost -U <user_name> -d <db_name>

Надеюсь, это кому-нибудь поможет.

3 голосов
/ 16 апреля 2014

Вы можете сделать это в pgadmin3. Удалите схемы, которые содержатся в вашем дампе. Затем щелкните правой кнопкой мыши базу данных и выберите «Восстановить». Затем вы можете найти файл дампа.

1 голос
/ 14 сентября 2018

Я заметил, что многие примеры слишком сложны для localhost, где во многих случаях существует просто пользователь postgres без пароля:

psql -d db_name -f dump.sql
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...