Как импортировать большую базу данных из Heroku в локальный mysql или sqlite3? - PullRequest
13 голосов
/ 22 августа 2011

В соответствии с заголовком, который мне нужно импортировать, но резервные копии PG дают мне строгий Postgres SQL, который не работает с MySQL, а также с неуказанной кодировкой, которую я предполагаю, UTF-16.Использование db: pull требует времени и ошибок перед завершением.Буду признателен за любое предложение.Спасибо.

Ответы [ 3 ]

23 голосов
/ 22 августа 2011

Установите 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
22 голосов
/ 07 декабря 2012

В 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 - текущая база данных.1008 *

Если вы используете Postgres.app , копировать вашу производственную базу данных довольно просто.Вы можете опустить -U myuser, если не настроили его иначе, и создать базу данных, запустив $ psql -h localhost, а затем CREATE DATABASE your_database_name; (из документации Postgres.app . Затем выполните указанную выше команду и вы 'переустановлен.

4 голосов
/ 19 марта 2014

Следуйте этим 4 простым шагам в вашем терминале
( Heroku Dev Center ):

  1. Установите инструмент Heroku Backup:

    $ heroku addons:add pgbackups
    
  2. Начните использовать это:

    $ heroku pgbackups:capture
    
  3. Загрузите удаленную базу данных на Heroku (на свой локальный компьютер), используя curl:

    $ curl -o latest.dump 'heroku pg:backups public-url'
    
  4. Загрузить *:

    $ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U YOUR_USERNAME -d DATABASE_NAME latest.dump
    
    • получите ваше имя пользователя и выберите нужную базу данных из файла config / database.yml.
    • DATABASE_NAME может быть вашей базой данных разработки / тестирования / производства (например, mydb_development)

Вот и все!

ОБНОВЛЕНИЕ: Обновлен до нового интерфейса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...