Мы переключаем хосты, а старый предоставил дамп 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...
^
Какой лучший способ импортировать базу данных?
psql databasename < data_base_dump
Это команда, которую вы ищете.
Осторожно: имя databasename
должно быть создано перед импортом. Взгляните на Документы PostgreSQL Глава 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 в указанном файле.
psql
. Спасибо!
Хорошо работает, в командной строке все аргументы требуются, -W для пароля
psql -h localhost -U user -W -d database_name -f path/to/file.sql
Просто для funsies, если ваш дамп сжат, вы можете сделать что-то вроде
gunzip -c filename.gz | psql dbname
Как отметил Джейкоб, Документы PostgreSQL достаточно хорошо описывают это.
Я использую:
cat /home/path/to/dump/file | psql -h localhost -U <user_name> -d <db_name>
Надеюсь, это поможет кому-то.
Вы можете сделать это в pgadmin3. Отбросьте схему (ы), содержащую ваш дамп. Затем щелкните правой кнопкой мыши по базе данных и выберите "Восстановить". Затем вы можете просмотреть файл дампа.
Я заметил, что многие примеры слишком сложны для localhost, где во многих случаях существует просто пользователь postgres без пароля:
psql -d db_name -f dump.sql
ERROR: syntax error at or near "t"
. Оказалось, что я импортировал только частичную схему, и, таким образом, операторCREATE TABLE
ранее в скрипте потерпел неудачу. Просмотрите весь вывод импорта, чтобы найти его.