it-roy-ru.com

Импортировать дамп 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...
        ^

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

371
dazz
psql databasename < data_base_dump

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

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

607
Jacob

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

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

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

\i C:/database/db-backup.sql
96
Arran Ubels

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

Sudo -u postgres psql db_name < 'file_path'
46
ivanacorovic

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

\i 'path/to/file.sql'

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

36
rockusbacchus

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

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

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

gunzip -c filename.gz | psql dbname

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

21
alan

Я использую:

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

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

5
Vajira Lasantha

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

3
Vanessa MacDougal

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

psql -d db_name -f dump.sql
1
Kiryl Plyashkevich