Импортировать дамп SQL в базу данных PostgreSQL

Мы переключаем хосты, а старый предоставил дамп 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 ...  

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

Если я сделаю

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

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

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

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

Ответ 2

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

psql -h hostname -d databasename -U username -f file.sql

Ответ 3

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

\i C:/database/db-backup.sql

Ответ 4

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

sudo -u postgres psql db_name < 'file_path'

Ответ 5

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

\i 'path/to/file.sql'

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

Ответ 6

Хорошо работает, в командной строке все аргументы требуются, -W для пароля

psql -h localhost -U user -W -d database_name -f path/to/file.sql

Ответ 7

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

gunzip -c filename.gz | psql dbname

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

Ответ 8

Вы можете сделать это в pgadmin3. Отбросьте схему (ы), содержащую ваш дамп. Затем щелкните правой кнопкой мыши по базе данных и выберите "Восстановить". Затем вы можете просмотреть файл дампа.

Ответ 9

Я использую:

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

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

Ответ 10

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

psql -d db_name -f dump.sql