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

331

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

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

  • 0
    У меня была ошибка, похожая на вашу первую: ERROR: syntax error at or near "t" . Оказалось, что я импортировал только частичную схему, и, таким образом, оператор CREATE TABLE ранее в скрипте потерпел неудачу. Просмотрите весь вывод импорта, чтобы найти его.
Теги:
database

10 ответов

590
Лучший ответ
psql databasename < data_base_dump

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

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

  • 1
    Я пробовал эту psql mydatabase <C: \ database \ db-backup.sql, но я получаю сообщение об ошибке Недопустимая команда \ database. Я также попытался с "" вокруг этого.
  • 0
    Вы пробовали cd'ing в C: \ database и вызывать psql mydatabase <db-backup.sql?
Показать ещё 13 комментариев
264

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

psql -h hostname -d databasename -U username -f file.sql
  • 23
    Хорошо, но лучше добавить также параметр «-L logfile.log» для записи выходных данных в файл.
  • 0
    Получение этого: «Входные данные представляют собой дамп пользовательского формата PostgreSQL. Используйте клиент командной строки pg_restore, чтобы восстановить этот дамп в базе данных».
92

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

\i C:/database/db-backup.sql
  • 0
    Пришлось использовать это, потому что eshell Emacs не поддерживает перенаправление ввода. Благодарю.
  • 1
    Обязательно сначала перейдите в базу данных с помощью \ c <имя_базы_данных>
Показать ещё 2 комментария
44

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

sudo -u postgres psql db_name < 'file_path'
  • 3
    Запуск как Postgres помог мне, спасибо!
29

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

\i 'path/to/file.sql'

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

  • 0
    Это решение сработало для меня, в то время как решение с наибольшим количеством голосов дало ошибку "stdin is tty".
  • 0
    Как раз то, что я искал - способ выполнить скрипт из командной строки psql . Спасибо!
Показать ещё 3 комментария
27

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

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

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

gunzip -c filename.gz | psql dbname

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

3

Я использую:

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

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

3

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

  • 1
    Но кнопка «восстановить» недоступна для нажатия даже после выбора файла .sql. Похоже, что этому программному обеспечению нужен какой-то другой файл - файл с форматом * .backup. Нажатие «help» в этом окне импорта ссылается на pg_restore - «... утилиту для восстановления базы данных PostgreSQL из архива, созданного pg_dump в одном из форматов, не содержащих текст». Файл sql, на который ссылается OP, представляет собой простой текстовый формат.
0

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

psql -d db_name -f dump.sql

Ещё вопросы

Сообщество Overcoder
Наверх
Меню