База данных 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:
- Создайте файл резервной копии из 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.
- Восстановите резервную копию с 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.