База данных Heroku Postgres в ElephantSQL

У меня есть база данных Postgres на Heroku, и я хочу разместить эту базу данных на ElephantSQL, но я не могу найти, как это сделать. У меня есть файл DUMP, загруженный из базы данных Heroku Postgres, но я не могу найти, как поместить данные в ElephantSQL.

Моя база данных была связана с приложением Django, и у меня уже есть мой экземпляр на ElephantSQL, связанный с копией того же приложения Django, но размещенного на Render. Я вижу на ElephantSQL, что у экземпляра есть все таблицы, так что мне просто нужно как-то поместить туда данные.

Любые советы или подсказки приветствуются!

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

Первые команды SQL устанавливают базы данных, схемы и таблицы. Если ваши таблицы уже существуют, то импорт может быть неудачным, потому что он хочет создать новые таблицы, которые уже существуют. К сожалению, без дополнительной информации о конкретных ошибках, которые вы видите, трудно сказать что-то более конкретное. Надеюсь, один из этих 4 вариантов поможет вам. Дайте мне знать в комментариях, как все прошло.

Для всех вариантов ниже я бы предложил сделать резервную копию базы данных целевого сервера, чтобы быть уверенным, что вы не испортите приложение Django, которое сейчас работает там даже без ваших данных.

Вариант 1: Ищите способ экспорта исходной базы данных без базы данных, схемы и определений таблиц.

Вариант 2: Если вы осторожны, вы можете отредактировать ваш файл дампа, чтобы удалить эти начальные команды настройки, и чтобы файл дампа начинался с команд, которые только продвигают данные в ваши таблицы.

Вариант 3: (ВАЖНО сначала сделать резервную копию сервера назначения для этого варианта.) Удалите базу данных, схему и/или таблицы на сервере назначения так, чтобы ничего не было предопределено, и посмотрите, сможет ли ваш файл дампа восстановить все так, как нужно Django на сервере назначения с вашими данными.

Вариант 4: Может быть много таблиц, но обычно можно экспортировать отдельные файлы данных таблиц с опцией не включать определения таблиц. Затем вам придется импортировать все таблицы в виде отдельных импортов. Также может сработать сочетание вариантов 3 и 4, где, если вы не можете найти опцию не включать определения, отбросьте таблицы в месте назначения и импортируйте каждую таблицу независимо.

Вот что сработало для меня, используя терминал Mac:

  1. Создайте файл резервной копии из Heroku:

pg_dump -h heroku_host -d heroku_database -U heroku_user -p heroku_port -W -Ft > latest.dump

Вам будет предложено ввести пароль от Heroku PostgreSQL. Обратите внимание, что эти heroku_xxx содержатся в учетных данных Heroku PostgreSQL.

  1. Восстановите резервную копию с Heroku на ElephantSQL:

pg_restore -h elephant_host -d elephant_database -U elephant_user -p 5432 -W -Ft latest.dump

Вам будет предложено ввести пароль от Heroku PostgreSQL. Обратите внимание, что эти elephant_xxx находятся в учетных данных ElephantSQL и что в них используется термин "сервер" вместо host.

Вернуться на верх