импорт дампа sql в базу данных postgresql

мы переключаем хосты, и старый предоставил SQL-дамп базы данных postgresql нашего сайта. Теперь я пытаюсь установить это на местном вампирском сервере, чтобы проверить это.

единственная проблема в том, что у меня нет идеи, как я могу импортировать эту базу данных в 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...
        ^

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

10 ответов


psql databasename < data_base_dump

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

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


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

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

Я считаю, что вы хотите работать в psql:

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

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

sudo -u postgres psql db_name < 'file_path'

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

\i 'path/to/file.sql'

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


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

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

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

gunzip -c filename.gz | psql dbname

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


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


Я использую:

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

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


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

psql -d db_name -f dump.sql