В соответствии с заголовком мне нужно импортировать, но резервные копии PG предоставляют мне строгий Postgres SQL, который не работает с MySQL, также с не указанной кодировкой, которая, я думаю, является UTF-16. Использование db: pull занимает домены и ошибки до окончания. Буду признателен за любое предложение. Спасибо.
Как импортировать большую базу данных из Heroku в локальный mysql или sqlite3?
Ответ 1
Настройте PostgreSQL локально, используйте PG backups, чтобы скопировать данные из Heroku на ваш локальный компьютер, затем pg_restore
, чтобы импортировать его в новый локальный PostgreSQL. Затем вы можете скопировать его из PostgreSQL в MySQL или SQLite локально, не беспокоясь о тайм-аутах. Или, поскольку после этого у вас будет функциональная установка PostgreSQL, просто начните разработку поверх PostgreSQL, чтобы ваш стек разработки лучше соответствовал вашему стеку развертывания; разработка и развертывание в одной базе данных - хорошая идея.
Вероятно, вы получаете двоичные дампы (т.е. pg_dump -Fc
) от Heroku, что объясняет, почему дамп выглядит как какой-то UTF -16 ерунда.
Вы можете использовать pgbackups addon для экспорта дампа базы данных
$ heroku addons:add pgbackups # To install the addon
$ curl -o latest.dump `heroku pgbackups:url` # To download a dump
Ответ 2
Heroku имеет инструкции о том, как это сделать: https://devcenter.heroku.com/articles/heroku-postgres-import-export#restore-to-local-database, который сводится к:
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
где myuser
- текущий пользователь, а mydb
- текущая база данных.
Если вы используете Postgres.app, довольно сложно скопировать вашу производственную базу данных локально. Вы можете оставить -U myuser
, если вы не настроили его иначе, и создать базу данных, запустив $ psql -h localhost
, а затем CREATE DATABASE your_database_name;
(из документа Postgres.app. Затем запустите указанную выше команду и вы установите.
Ответ 3
Следуйте этим 4 простым шагам в вашем терминале
(Центр Heroku Dev):
-
Установите инструмент архивирования Heroku:
$ heroku addons:add pgbackups
-
Начните использовать его:
$ heroku pgbackups:capture
-
Загрузите удаленный db на Heroku (на ваш локальный компьютер) с помощью curl:
$ curl -o latest.dump 'heroku pg:backups public-url'
-
Загрузите его *:
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U YOUR_USERNAME -d DATABASE_NAME latest.dump
- получите свое имя пользователя и выберите нужную базу данных из файла config/database.yml.
- DATABASE_NAME может быть вашей разработкой/тестом/производством db (пример mydb_development)
Что это!
UPDATE: Он обновляется до нового интерфейса